首页 文章

ValueError:无法将形状(25,1)的输入数组广播为形状(25)

提问于
浏览
0

当我试图运行这个简单的代码片段时

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

我想知道是否有人可以指出这个问题的解决方案?

我知道它在图像处理中发生了很多,但是这一点,我不知道如何规避 .

干杯 .

1 回答

  • 1

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

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

    Numpy广播基本上试图通过从最后一个维度开始并移动到第一个维度来匹配数组的维度(在广播时) . 在这种情况下,G(1)的第二个维度被广播到25( H[:, i] 的第一个维度.G的第一个维度与任何东西都不匹配 . 你可以阅读更多关于numpy广播规则的信息here .

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

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

相关问题