我定义了一个二维数组如下:
predict_result = np.zeros((69,1000))
在循环中,我试图将预测的一维数组注入其中。
for ij in range(0,1000):
# # some code to generate Ypredict
predict_result[:,ij]=Ypredict
Ypredict
始终是(69,1)
的形状。但是,运行该程序会出现以下错误
predict_result [:,ij] = Ypredict ValueError:无法广播输入 从形状(69,1)到形状(69)的阵列
如何更正此错误?
答案 0 :(得分:1)
将(69,1)数组更改为(69,),或者创建接收槽(69,1)
ravel
是几种展平二维数组的方法之一:
predict_result[:,ij]=Ypredict.ravel()
带有列表而不是标量的索引以另一种方式工作:
predict_result[:,[ij]]=Ypredict
你也可以使用广播将较小的数组放入较大的数组而不需要循环 - 如另一个答案中所述:
(69,1000) <= (69,1) works
广播的两个基本规则:
可以在开头添加尺寸1尺寸以匹配尺寸数
可以更改所有尺寸1尺寸以匹配其他阵列的相同尺寸。
(69,)无法更改为匹配(69,1)。但是(69,1)可以改为匹配(69,1000)。
答案 1 :(得分:-2)
您不需要for-loop:
predict_result[:] = Ypredict
或者您可以按repeat
创建结果:
np.repeat(Ypredict, 1000, axis=1)