это мой код:
import numpy as np
from scipy.ndimage.interpolation import shift
B = np.array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
F = np.array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 1],
[0, 0, 0, 0, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
M = np.array([[1, 2, 1, 2, 1],
[1, 2, 1, 2, 1],
[1, 2, 1, 2, 0],
[1, 2, 1, 2, 1],
[1, 2, 1, 2, 1]])
if F[2, 4] == 1:
B = np.add(M, B)
if F[1, 4] == 1:
M_shift = shift(M, (-1, 0), cval=0)
B = np.add(M_shift, B)
print(B)
Я хочу добавить M к B, если условие для F истинно.В этом примере оба условия if верны, и я подумал, что мой код добавит два раза M к B. Но, видимо, это не работает?Что не так?
Заранее спасибо.
РЕДАКТИРОВАТЬ для arra:
Мой желаемый вывод в этом случае, мой фрагмент кода должен добавить матрицу с B, а такжесдвинутая версия М. Потому что оба условия верны.Но, как вы сказали, первое назначение перезаписываетсяКак я могу предотвратить перезапись для этого случая?
Вывод после присваивания должен выглядеть следующим образом:
B = np.array([[2, 4, 2, 4, 2],
[2, 4, 2, 4, 1],
[2, 4, 2, 4, 1],
[2, 4, 2, 4, 2],
[1, 2, 1, 2, 1]])
Полагаю, хорошим способом является использование цикла for, потому что я хочу проверить все записи массива в матрице F,если есть 1. Но я считаю, что если я использую функцию np.add, я перезапишу ее снова