Использование цикла for для замены значений в матрице, но сохраняется только последнее замененное значение - PullRequest
0 голосов
/ 20 сентября 2019
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 ]

1 голос
/ 20 сентября 2019

Вы инициализируете новый 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]]
0 голосов
/ 20 сентября 2019

у вас есть инициализация zeros_array внутри цикла, поэтому он делает это каждый цикл

do:

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]

output:

array([[ 0.  , -0.5 ],
       [ 0.25, -0.25],
       [ 0.5 ,  0.  ],
       [ 0.75,  0.25]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...