>>> a = np.array([1.0, 2.0, 3.0])
>>> b = np.array([2.0, 2.0, 2.0])
>>> a * b
array([ 2., 4., 6.])
酷,有道理。数组中对齐的元素相乘。
然后我注意到there is another way to使用广播;使用关键字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.]])
答案 0 :(得分:5)
另一种选择是使用np.broadcast_arrays查看广播到相同形状后x
和y
的样子:
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]])
答案 1 :(得分:4)
您可以通过将numpy.broadcast
对象转换为列表来查看其内容。
>>> import numpy as np
>>> x = np.array([[1], [2], [3]])
>>> y = np.array([4, 5, 6])
>>> b = np.broadcast(x, y)
>>> b
<numpy.broadcast object at 0xad0310>
>>> list(b)
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
答案 2 :(得分:1)
使用第一个数组的broadcast
是:
In [350]: a = np.array([1,2,3]); b=np.array([2,2,2])
In [351]: ab=list(np.broadcast(a,b))
# [(1, 2), (2, 2), (3, 2)]
In [353]: list([i*j for i,j in ab])
Out[353]: [2, 4, 6]
当数组具有不同的维度时,'broadcast'变得更有趣,如第二个例子(列向量和行向量)所示。
broadcast
示例并不适用于生产。它说明了当您执行a*b
等操作时发生的事情。