Numpy заменить матрицу поэлементно на другую матрицу - PullRequest
2 голосов
/ 17 марта 2020

У меня есть матрица n * x numpy, которая может выглядеть следующим образом:

a = np.array([[1, 0], [0, 1]])

, и у меня есть другая матрица n * n numpy, которая выглядит следующим образом:

b = np.array([[2, 2], [2, 2]])

Я хотел бы заменить ноль элементов a на соответствующий элемент b, чтобы я получил:

[[1, 2],
 [2, 1]]

Как я могу это сделать?

Ответы [ 2 ]

4 голосов
/ 17 марта 2020

Вы можете использовать np.where:

np.where(a!=0, a, b)

array([[1, 2],
       [2, 1]])
​
4 голосов
/ 17 марта 2020

Вы можете просто использовать логическую маску:

mask = (a == 0)
a[mask] = b[mask]

Это эффективно, если вы хотите обновить исходный массив a, поскольку он присваивает только нулевые элементы, а не весь массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...