NumPy-什么是广播?

青蛙

我不懂广播该文档说明了广播规则,但似乎没有用英语对其进行定义。我的猜测是,广播是当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,) 

错误消息暗示我走在正确的轨道上。有人可以定义广播,然后提供一些简单的示例,说明何时可以正常播放,什么时候不可用?

梅斯卡拉

术语广播描述了numpy在算术运算期间如何处理具有不同形状的数组。

基本上,这是numpy可以扩展数组操作范围的一种方式。

广播的唯一要求是对齐数组尺寸的方式,以便:

  • 对齐的尺寸相等。
  • 对齐的尺寸之一是1。

因此,例如:

x = np.ndarray(shape=(4,1,3))
y = np.ndarray(shape=(3,3))

您无法像这样对齐x和y:

4 x 1 x 3
3 x 3

但您可能会这样:

4 x 1 x 3
    3 x 3

这样的操作会如何产生?

假设我们有:

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]])

该操作x + y将导致:

array([[2, 3, 4],
       [2, 3, 4],
       [2, 3, 4]])

我希望你能抓住这个漂移。如果没有,您可以随时在此处查看官方文档

干杯!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章