Есть ли какая-нибудь операция с двумя массивами numpy для сброса нулевых значений? - PullRequest
0 голосов
/ 25 сентября 2019

Предположим, у нас есть два массива x1 и x2, как показано ниже:

x1 = np.array([[0,2,9,1,0]])
x2 = np.array([[7,3,0,6,8]])

Существует ли какая-либо операция типа:

x2(operation)x1 = array([[ 0,  3,  0,  6, 0]])

, например, если x1 или x2 - это 0 при любом индексе, затем установите значение индекса массива результата в ноль.В противном случае оставьте x2 как есть.

Ответы [ 2 ]

2 голосов
/ 25 сентября 2019

Учитывая, что вы хотите сохранить x2, но сделать его равным нулю в случае, если x1 равно нулю, просто умножьте x2 на логическое значение x1.

>>> x2 * x1.astype(bool)
array([[0, 3, 0, 6, 0]])

Обратите внимание, что еслиx2 равно нулю, результат равен нулю, как и ожидалось.

2 голосов
/ 25 сентября 2019

Использование numpy.where:

x3 = np.where(x1 == 0, x1, x2)
print(x3)

Вывод:

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