Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中用for循环填充2d数组的每个元素_Python_Arrays_For Loop - Fatal编程技术网

如何在python中用for循环填充2d数组的每个元素

如何在python中用for循环填充2d数组的每个元素,python,arrays,for-loop,Python,Arrays,For Loop,发生的是循环正在迭代并填充数组的元素,但“元素方面”——即它正在正确计算第一个元素,然后再次循环并用第二个元素填充第一个元素……因此最终,我有一个2d数组/矩阵,其中填充的值应该只在矩阵的最后一个元素中。如何使其在第一个元素被填充后,for循环继续移动到下一个元素和下一个值 以下是我尝试过的: sim_matrix=np.zeros((3,3), dtype=float) for i in range(0,3): for j in range(0,3): for k i

发生的是循环正在迭代并填充数组的元素,但“元素方面”——即它正在正确计算第一个元素,然后再次循环并用第二个元素填充第一个元素……因此最终,我有一个2d数组/矩阵,其中填充的值应该只在矩阵的最后一个元素中。如何使其在第一个元素被填充后,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]]
如你所见,它只填充了最后一个元素。我在这些嵌套的中心运行print命令,查看它是如何填充的,如下所示:(示例)

i、 e.第一个元素是正确的,但随后被第二个元素替换。这在代码中可能已经很明显了,但我认为它仍然有助于说明。 我还尝试了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


感觉很接近,但我就是不太明白我哪里出了问题

据我所知,2D阵列中的每个位置都有相同的数字。首先,在不了解“节点列表”的情况下,很难提出任何建议。但是,要将值指定给二维数组,只需要两个循环。您的代码可以写成 模拟矩阵=np.零((3,3),数据类型=浮点)


如果它不起作用,请告诉我并提供有关节点列表bsc的更多信息。

据我所知,您在2D阵列的每个位置都会得到相同的号码。首先,在不了解“节点列表”的情况下,很难提出任何建议。但是,要将值指定给二维数组,只需要两个循环。您的代码可以写成 模拟矩阵=np.零((3,3),数据类型=浮点)


如果不起作用,请告诉我并提供有关节点列表的更多信息。

请检查最内部for循环的缩进。不清楚为什么要运行这两个内部循环
i
j
在这些循环过程中不会改变,因此您反复设置相同的元素(
sim\u matrix[i][j]
),您的矩阵是否足够大?我看到你把它设置为3 x 3,但是既然有4个循环,它不是应该是4 x 3吗?请检查你最里面的for循环的缩进。不清楚你为什么要运行这两个内部循环
i
j
在这些循环过程中不会改变,因此您反复设置相同的元素(
sim\u matrix[i][j]
),您的矩阵是否足够大?我知道你把它设置为3x3,但是既然有4个循环,它不应该是4x3吗?
#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

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']