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)我想你误解了“要生成的代码代表什么”