用for循环填充空矩阵



我正试图使用迭代和方程在Python中创建一个3195x71矩阵。代码参考如下:-

##Creating an empty matrix
import numpy as np
CC_FINAL = np.empty((3195,71))
for i in range(3195):
eB1_s = eB1[i]
Ys = Y.iloc[i]
Y_s = Ys.values.reshape(1,71)
CC_s = np.dot(eB1_s,Y_s)
CClist=CC_s
CCdf=pd.DataFrame(CClist) 
CC_final_demand_s=np.add(CC_s,HC,size=(1,71))
print(CC_final_demand_s)
Final_DD = np.concatenate((CC_FINAL,CC_final_demand_s))
print(Final_DD)

方程CC_final_demand_s=np.add(CC_s,HC,size=(1,71))检验出来,我得到了我想要的输出。输出是这样的(多达71列,3195次)

0           1             2            3           4   
1  5913403.203026  214.118854  15892.865306  5379.204602  333.111413   
5          6            7          8          9          10  
1  499.54388  27.436068  8302.752527  293.54779  30.622154  87.851813   
11            12          13         14         15          16  
1  10121.788307  38874.323567  120.792053  46.108922  20.592629  727.064092   
17            18            19            20        21        22  
1  7838.86962  30496.167176  92945.842897  40627.994136  4.506425  8.177975   

但是,当我试图将上面等式的结果组合到空矩阵中时,有些东西似乎不正确。我得到了Final_DD的正确尺寸,但输出不正确。非常感谢您的任何建议!

您从CC_FINAL = np.empty((3195,71))开始,没有更改它。您查看了它的值吗?我怀疑你不明白np.empty的作用。

在循环中进行

Final_DD = np.concatenate((CC_FINAL,CC_final_demand_s))

也就是说,将(3195,71)数组与(1,71)数组连接,生成(3196,71),其中大多数行都是垃圾。您可以一次又一次地执行此操作,而不更改CC_FINAL或保留Final_DD。您只需连接一个不同的CC_final_demand_s。你不是";填充";CCD_ 8。

更详细地研究逻辑。它可能有助于制作更小的数组,这样您就可以实际查看它们的值。

最新更新