使用for循环替换矩阵中的值,但仅保留最后替换的值

时间:2019-09-19 21:25:19

标签: python arrays for-loop matrix replace

x_n = np.arange(0, 1.0, 0.25)
u_m = np.arange(0, 1.0, 0.5)

for x in range(len(x_n)):
    for u in range(len(u_m)):
        zeros_array = np.zeros( (len(x_n), len(u_m)) )
        zeros_array[x,u] = x_n[x] - u_m[u]

zeros_array  

#result
array([[ 0.  ,  0.  ],
      [ 0.  ,  0.  ],
      [ 0.  ,  0.  ],
      [ 0.  ,  0.25]])

仅保留最后替换的值。我想知道如何保留所有替换的值。

2 个答案:

答案 0 :(得分:1)

您将在循环的每次迭代中初始化一个新的zeros_array,因此很直接的一点是,当循环结束时,仅保留最后一个zeros_array值,要解决此问题,您需要一次在循环外定义zeros_array并在内部不断更新:

x_n = np.arange(0, 1.0, 0.25)
u_m = np.arange(0, 1.0, 0.5)

zeros_array = np.zeros((len(x_n), len(u_m)))

for x in range(len(x_n)):
    for u in range(len(u_m)):
        zeros_array[x, u] = x_n[x] - u_m[u]

print(zeros_array)

输出:

[[ 0.   -0.5 ]
 [ 0.25 -0.25]
 [ 0.5   0.  ]
 [ 0.75  0.25]]

答案 1 :(得分:0)

您在循环内对zeros_array进行了初始化,因此它在每个循环中都进行了

这样做:

zeros_array = np.zeros((len(x_n),len(u_m)))
for x in range(len(x_n)):
    for u in range(len(u_m)):
        zeros_array[x,u] = x_n[x] - u_m[u]

输出:

array([[ 0.  , -0.5 ],
       [ 0.25, -0.25],
       [ 0.5 ,  0.  ],
       [ 0.75,  0.25]])