【问题标题】:ValueError: could not broadcast input array from shape (25,1) into shape (25)ValueError:无法将输入数组从形状(25,1)广播到形状(25)
【发布时间】:2018-06-30 14:11:11
【问题描述】:

当我尝试运行这个简单的 sn-p 代码时

a= 2

G = np.random.rand(25,1)
H = np.zeros((25,a))

for i in range(a):
    H[:,i] = .5 * G 

我收到了

ValueError: could not broadcast input array from shape (25,1) into shape (25). 

我想知道是否有人可以指出解决此问题的方法?

我知道它在图像处理中经常发生,但是这个,我不知道如何规避。

干杯。

【问题讨论】:

  • 你为什么选择 G 的形状?

标签: python arrays numpy valueerror


【解决方案1】:

要解决此问题,请使用 G 的第一列:

for i in range(a):
    H[:,i] = .5 * G[:, 0]

Numpy 广播基本上尝试通过从最后一个维度开始并移动到第一个维度来匹配数组的维度(在广播时)。在这种情况下,G (1) 的第二个维度被广播到 25(H[:, i] 的第一个也是唯一一个维度。G 的第一个维度不匹配任何内容。您可以阅读有关 numpy 广播规则here 的更多信息。

注意:你真的不需要 for 循环。 H 只是 G 列重复两次。您可以通过多种方式实现这一点(例如np.tilenp.hstack 等)

H = np.tile(G / 2, 2)

【讨论】:

    猜你喜欢
    • 2018-06-08
    • 2020-01-21
    • 2020-10-18
    • 2018-09-25
    • 2018-04-21
    • 2020-10-09
    • 2021-03-30
    • 2021-08-24
    • 2019-11-28
    相关资源
    最近更新 更多