Numpy 如何检查两个数组是否可广播

Numpy 如何检查两个数组是否可广播

在Numpy中,广播是一种非常有用的功能,它可以帮助我们在不创建副本或使用循环的情况下对数组执行各种操作。将较小的数组广播为较大的数组,可以简化许多任务,比如相加或者相乘两个数组时,如果它们广播兼容,我们可以直接对它们执行加法或乘法,而不必担心它们的形状是否匹配。所以这里我们将介绍如何检查两个数组是否可以广播。

阅读更多:Numpy 教程

什么是广播

广播是Numpy中的一个中心概念,意思是在算数运算期间自动处理不同大小的数组。对于简单的数组应用,广播的规则非常直截了当,意味着第一个数组的形状必须与第二个数组的形状匹配,或者第二个数组的形状是1。下面是一个例子,其中我们将数组b广播成了a 一样的形状:

import numpy as np

a = np.array([[1, 2],[3, 4]])
b = np.array([1, 2])
c = a + b
print(c)
Python

输出结果为:

array([[2, 4],
       [4, 6]])
Python

这里,我们可以看到Numpy已经自动将两个数组广播在一起,以使它们兼容并执行加法运算。

如何检查两个数组是否可广播

通过在数组的维数上进行比较,我们可以轻松地检查两个数组是否可以广播。 前提是,两个数组的维度在它们的长度之前存在1. 我们按照以下步骤来检查两个数组是否可广播:

  • 维数相等,相应维度长度相等。
  • 其中有一个数组的维度为1,此时长度为1的维度可以广播。
  • 不相等的维度必须其中一个的长度为1,否则两个数组不可广播。

下面是一个例子:

import numpy as np

a = np.array([3, 5, 7])
b = np.array([[1],[2],[3]])
c = np.array([[1, 0, 1]])

print(np.broadcast_arrays(a, b))
print(np.broadcast_arrays(a, c))
print(np.broadcast_arrays(b, c))
Python

输出结果为:

[array([[3, 5, 7],
        [3, 5, 7],
        [3, 5, 7]]), array([[1, 1, 1],
        [2, 2, 2],
        [3, 3, 3]])]
[array([[3, 5, 7],
        [3, 5, 7],
        [3, 5, 7]]), array([[1, 0, 1],
        [1, 0, 1],
        [1, 0, 1]])]
[array([[1, 1, 1],
        [2, 2, 2],
        [3, 3, 3]]), array([[1, 0, 1],
        [1, 0, 1],
        [1, 0, 1]])]
Python

这里,我们使用了broadcast_arrays()函数,它接受两个数组并返回它们广播兼容的新数组。

总结

在Numpy中,广播是一个非常有用的功能,它可以帮助我们在不创建副本或使用循环的情况下对数组执行各种操作。将较小的数组广播为较大的数组可以简化许多任务。通过在数组的维数上进行比较,我们可以轻松地检查两个数组是否可以广播,并使用Numpy广播兼容的函数将它们组合在一起。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册