你如何看待一个numpy广播对象?

cho*_*on4 3 python numpy

根据文件:

>>> a = np.array([1.0, 2.0, 3.0])
>>> b = np.array([2.0, 2.0, 2.0])
>>> a * b
array([ 2.,  4.,  6.])
Run Code Online (Sandbox Code Playgroud)

很酷,很有意义.数组中对齐的元素相乘.

然后我注意到还有另一种使用广播的方式; 通过使用关键字np.broadcast(a,b)
文档说明您通过输入np.broadcast(a,b)来创建广播图像.但是,它没有明确说明创建后如何查看此对象.

它给出了一个如何操作的示例,但没有解释该示例中到底发生了什么:

>>> out = np.empty(b.shape)
>>> out.flat = [u+v for (u,v) in b]
>>> out
array([[ 5.,  6.,  7.],
       [ 6.,  7.,  8.],
       [ 7.,  8.,  9.]])
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 5

另一种选择是使用np.broadcast_arrays看什么xy看起来像被广播到相同的形状后:

In [32]: x = np.array([[1], [2], [3]])    
In [33]: y = np.array([4, 5, 6])

In [37]: x, y = np.broadcast_arrays(x, y)

In [38]: x
Out[38]: 
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3]])

In [39]: y
Out[39]: 
array([[4, 5, 6],
       [4, 5, 6],
       [4, 5, 6]])

In [40]: x+y
Out[40]: 
array([[5, 6, 7],
       [6, 7, 8],
       [7, 8, 9]])
Run Code Online (Sandbox Code Playgroud)