我不懂广播。该文档解释了广播规则,但似乎没有用英语对其进行定义。我的猜测是,广播是当NumPy用虚拟数据填充较小尺寸的数组以执行操作时。但这不起作用:
>>> x = np.array([1,3,5])
>>> y = np.array([2,4])
>>> x+y
*** ValueError: operands could not be broadcast together with shapes (3,) (2,)
Run Code Online (Sandbox Code Playgroud)
该错误消息暗示我走在正确的道路上。有人可以定义广播,然后提供一些简单的示例,说明何时可以正常播放,什么时候不可用?
术语“广播”描述了 numpy 在算术运算期间如何处理不同形状的数组。
这基本上是 numpy 扩展数组运算域的一种方式。
广播的唯一要求是对齐数组维度的方法,以便:
因此,例如如果:
x = np.ndarray(shape=(4,1,3))
y = np.ndarray(shape=(3,3))
Run Code Online (Sandbox Code Playgroud)
你不能像这样对齐 x 和 y:
4 x 1 x 3
3 x 3
Run Code Online (Sandbox Code Playgroud)
但你可能会喜欢这样:
4 x 1 x 3
3 x 3
Run Code Online (Sandbox Code Playgroud)
假设我们有:
x = np.ndarray(shape=(1,3), buffer=np.array([1,2,3]),dtype='int')
array([[1, 2, 3]])
y = np.ndarray(shape=(3,3), buffer=np.array([1,1,1,1,1,1,1,1,1]),dtype='int')
array([[1, 1, 1],
[1, 1, 1],
[1, 1, 1]])
Run Code Online (Sandbox Code Playgroud)
该操作x + y将导致:
array([[2, 3, 4],
[2, 3, 4],
[2, 3, 4]])
Run Code Online (Sandbox Code Playgroud)
我希望你能明白其中的意思。如果您没有,您可以随时在此处查看官方文档。
干杯!
| 归档时间: |
|
| 查看次数: |
990 次 |
| 最近记录: |