[英]How to fill each element of a 2d array with a for loop in python
發生的事情是循環正在迭代並填充數組的元素,但是'元素明智' - 即它正確計算第一個元素,然后再次循環並再次用應該是第二個元素的元素填充第一個元素......所以最終,我有一個二維數組/矩陣,其中填充了應該只在矩陣的最后一個元素中的值。 如何使第一個元素被填充后,for循環繼續移動到下一個元素和下一個值?
這是我試過的:
sim_matrix=np.zeros((3,3), dtype=float)
for i in range(0,3):
for j in range(0,3):
for k in range(0,3):
for l in range(0,3):
sim_matrix[i][j]=node_list_bsc[0][k]['bsc mean value']-node_list_bsc[1][l]['bsc mean value']
#node_list_bsc[x][y]['bsc mean value'] are float values - they are stored in a list of dictionaries,
#hence the double indexing
這給出了:
array([[1.14488261e-08, 1.14488261e-08, 1.14488261e-08],
[1.14488261e-08, 1.14488261e-08, 1.14488261e-08],
[1.14488261e-08, 1.14488261e-08, 1.14488261e-08]])
但它應該給出:
[[-5.131371757023141e-10, -7.509188731093747e-08, 7.67647989217221e-07],
[8.933230795306053e-08, 1.475355781782538e-08, 8.574934343459839e-07],
[-7.567123003427902e-07, -8.312910504780254e-07, 1.144882605013307e-08]]
如您所見,它僅填充了最后一個元素。 我從這些嵌套 for 循環的中心運行打印命令,以查看它是如何填充的,如下所示:(示例)
[[-5.13137176e-10 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00]]
[[-7.50918873e-08 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00]]...
即第一個元素是正確的,但隨后被第二個元素替換。 從代碼中這可能已經很明顯了,但我認為它仍然有助於說明。 我也嘗試過使用 while 循環和 if - else 語句 - 類似:
#pseudo code following:
for i in range(0,3):
for j in range(0,3):
for k in range(0,3):
for l in range(0,3):
if sim_matrix[i][j]==0.0:
sim_matrix[i][j]=node_list_bsc[0][k]['bsc mean value']-node_list_bsc[1][l]['bsc mean value']
else: continue
感覺很接近——但我就是不知道我哪里出錯了!
據我了解您的問題,您在二維數組的每個位置都得到相同的數字。 起初,如果不了解“node_list_bsc”,就很難提出任何建議。 但是,要將值分配給 2D 數組,您只需要兩個循環。 您的代碼可以寫成 sim_matrix=np.zeros((3,3), dtype=float)
for i in range(0,3):
for j in range(0,3):
if sim_matrix[i][j]==0.0:
sim_matrix[i][j]=node_list_bsc[0][i]['bsc mean value']- node_list_bsc[1][j]['bsc mean value']
如果它不起作用,請告訴我並提供有關 node_list_bsc 的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.