【问题标题】:Using for loop to replace values in a matrix but only the last replaced value is kept使用 for 循环替换矩阵中的值,但只保留最后替换的值
【发布时间】:2020-01-20 23:11:14
【问题描述】:
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]])

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

【问题讨论】:

  • 你在每个循环初始化一个新的 zeros 数组
  • 以后请发minimal reproducible example。例如矩阵/数组与问题无关;一维列表可能会遇到同样的问题。

标签: python arrays for-loop matrix replace


【解决方案1】:

您在循环的每次迭代中都初始化了一个新的zeros_array,所以当循环结束时,只保留最后一个zeros_array 值,要解决这个问题,您需要定义@987654323 @ 一次在循环外并在内部不断更新:

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

【讨论】:

    【解决方案2】:

    你在循环中初始化了 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]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-27
      • 2016-07-14
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多