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

Posted

技术标签:

【中文标题】ValueError:无法将输入数组从形状(25,1)广播到形状(25)【英文标题】:ValueError: could not broadcast input array from shape (25,1) into shape (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 的形状? 【参考方案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)

【讨论】:

以上是关于ValueError:无法将输入数组从形状(25,1)广播到形状(25)的主要内容,如果未能解决你的问题,请参考以下文章

如何将 RGB ImageItem 添加到 pyqtgraph ViewBox? ValueError:无法将输入数组从形状(256,256,4)广播到形状(256,256)

model.fit 给出 ValueError :检查输入时出错:预期的 conv2d 得到了形状为 () 的数组

ValueError:检查输入时出错:预期dense_1_input的形状为(180,),但数组的形状为(1,)

ValueError:检查输入时出错:预期的dense_26_input具有形状(45781,)但得到的数组具有形状(2,)

ValueError:操作数无法与形状一起广播 (2501,201) (2501,)

TF2.6:ValueError:模型无法保存,因为尚未设置输入形状