Python 关于将一个数组放入矩阵的广播错误
我定义了一个二维数组,如下所示:Python 关于将一个数组放入矩阵的广播错误,python,numpy,scipy,Python,Numpy,Scipy,我定义了一个二维数组,如下所示: 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 Value
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)的数组
如何更正此错误?您不需要循环:
predict_result[:] = Ypredict
或者您可以通过重复来创建结果:
np.repeat(Ypredict, 1000, axis=1)
将(69,1)阵列更改为(69,),或设置接收插槽(69,1)
ravel
是几种展平二维阵列的方法之一:
predict_result[:,ij]=Ypredict.ravel()
使用列表而不是标量的索引的工作方式是相反的:
predict_result[:,[ij]]=Ypredict
您还可以使用广播将较小的阵列放入较大的阵列中,而无需循环-如另一个答案中所述:
(69,1000) <= (69,1) works
(691000)我想你误解了“要生成的代码代表什么”