繁体   English   中英

numpy广播

[英]Broadcasting in numpy

我刚刚开始学习numpy,并通过numpy的scipy教程进行学习。 我的问题与广播何时发生有关。

如本教程中所建议,如果两个数组满足某些条件,则它们是兼容的,例如:

  1. 他们是平等的
  2. 其中之一是1

我的问题是,假设我有以下两个数组:

import numpy as np

c1 = np.arange(10).reshape(2,5)
c2 = np.arange(8).reshape(2,4,1)
c3 = c1-c2

但是上面的操作给了我兼容/广播错误,如下所示:

ValueError: operands could not be broadcast together with shapes (2,5) (2,4,1)

当我用笔和纸示意性地表示这两个数组时,我无法执行该操作,但是我无法从上述教程中了解到如何无法在数组上成功执行该操作。 请帮助我理解。

我知道这是基本的知识,但这对我的理解会有所帮助。

问候

这是确定是否可以广播两个数组的过程:将形状与右对齐对齐:

  2 5
2 4 1

在左侧加1,以使两个形状的轴数相同(如下所示,以列表示):

1 2 5
2 4 1

现在,比较各列。 为了使广播正常工作,每列中的值必须相同或其中一个值必须等于1。

在第二列中,2不等于4,因此无法进行广播。 (在第一和第三列中,“ 1”使那些轴与广播兼容,但是由于第二列,整个阵列无法广播。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM