Numpy广播机制 (2020.04.08)

2020-04-08  本文已影响0人  似海深蓝

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,则可以补齐:

规则1
np.arange(3)+5
#array([5, 6, 7])
规则1

规则2:如果两个数组的形状在任何一个维度都不匹配,但两个数组都有其中以维度为1,则数组的形状会沿着维度为1的维度扩展,以匹配另外一个数组形状。**

规则2
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) 

上一篇 下一篇

猜你喜欢

热点阅读