1.何为广播机制
不规则数组相加机制
x_02 = np.array([1, 2, 3, 4])
x_02+1 # array([2, 3, 4, 5])
x_01=np.array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
x_02 = np.array([1, 2, 3, 4])
#输出
array([[ 1, 3, 5, 7],
[ 5, 7, 9, 11],
[ 9, 11, 13, 15]])
2. 三种广播规则
规则1:如果两个数组形状中,只有其中一个维度相同,另一个维度不一致,但是其中一个数组有维度为1,则可以补齐:
np.arange(3)+5
#array([5, 6, 7])
规则1
规则2:如果两个数组的形状在任何一个维度都不匹配,但两个数组都有其中以维度为1,则数组的形状会沿着维度为1的维度扩展,以匹配另外一个数组形状。**
np.ones((1,3))+np.ones((2,1))
#array([[2., 2., 2.],
# [2., 2., 2.]])
规则3:如果两个数组的形状在任何一个维度上都不匹配并且没有任何一个维度等于1,会广播错误。
>>> np.ones((3,3))+np.ones((2,3))
输出:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-6-6f99938fd268> in <module>
----> 1 np.ones((3,3))+np.ones((2,3))
ValueError: operands could not be broadcast together with shapes (3,3) (2,3)
网友评论