Numpy массив, как заменить значения, которые удовлетворяют списку условий? - PullRequest
0 голосов
/ 10 октября 2019

Предположим, у меня есть массив NumPy x = [1, 2, 3, 4, 5, ...], и я хочу заменить значения, которых нет в списке a = [1, 3, 5, ...], на 0.

Я попытался x[x not in a] = 0, но получил ошибку:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Кто-нибудь знает правильный способ, не требующий разъяснения условий?

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

Вы должны использовать numpy.where:

x = np.array([1, 2, 3, 4, 5])
a = np.array([1, 3, 5])
mask = np.isin(x, a)
x[mask] = 0
print(x)
>>> array([0, 2, 0, 4, 0]) 
0 голосов
/ 10 октября 2019
import numpy as np
x = np.array([1, 2, 3, 4, 5])
a = np.array([1, 3, 5])
x[~np.isin(x,a)] = 0

### Output
>>> array([1, 0, 3, 0, 5])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...