📅  最后修改于: 2020-10-27 02:18:58             🧑  作者: Mango
在数学运算中,我们可能需要考虑不同形状的阵列。 NumPy可以在涉及不同形状的数组的情况下执行此类操作。
例如,如果我们考虑矩阵相乘运算,则如果两个矩阵的形状相同,则将易于执行此运算。但是,如果形状不相似,我们可能还需要操作。
考虑下面的示例将两个数组相乘。
import numpy as np
a = np.array([1,2,3,4,5,6,7])
b = np.array([2,4,6,8,10,12,14])
c = a*b;
print(c)
输出:
[ 2 8 18 32 50 72 98]
但是,在上面的示例中,如果考虑不同形状的数组,则会得到如下所示的错误。
import numpy as np
a = np.array([1,2,3,4,5,6,7])
b = np.array([2,4,6,8,10,12,14,19])
c = a*b;
print(c)
输出:
ValueError: operands could not be broadcast together with shapes (7,) (8,)
在上面的示例中,我们可以看到两个数组的形状不相似,因此无法将它们相乘。 NumPy可以通过使用广播的概念执行此类操作。
在广播中,将较小的阵列广播到较大的阵列,以使其形状彼此兼容。
如果满足以下情况,则可以进行广播。
如果满足以下规则,则可以将广播应用于阵列。
让我们看一个广播的例子。
import numpy as np
a = np.array([[1,2,3,4],[2,4,5,6],[10,20,39,3]])
b = np.array([2,4,6,8])
print("\nprinting array a..")
print(a)
print("\nprinting array b..")
print(b)
print("\nAdding arrays a and b ..")
c = a + b;
print(c)
输出:
printing array a..
[[ 1 2 3 4]
[ 2 4 5 6]
[10 20 39 3]]
printing array b..
[2 4 6 8]
Adding arrays a and b ..
[[ 3 6 9 12]
[ 4 8 11 14]
[12 24 45 11]]