2016-08-15 4 views
3

У меня есть список Numpy массива:Ищите индексы по NumPy где

x = ["A", "A", "B", "A", "C", "D", "B"] 

Для нахождения индексов "A" я использую np.where(x == "A") и она отлично работает. Как найти индексы "A" и "B"?

я использовал:

np.where(x == ["A", "B"]) 
np.where(x in ["A", "B"]) 
np.where(x == any(["A", "B"])) 

Но это не помогло мне.

+0

Divakar - ваш дубликат отсутствует принятый ответ, один с помощью logical_or масок. Это не похоже на хороший дубликат для меня. :) – hpaulj

+0

Я только что отметил в другом возможном «дубликате», что для случая вроде этого «np.in1d» (принятый ответ в другом дубликате), вероятно, используя ответ «логический_or», указанный здесь. Посмотрите на код для 'in1d'. http://stackoverflow.com/a/38924371/901925 – hpaulj

ответ

5

Использование | или np_logical_or для поэлементного ИЛИ:

x = np.array(x) 
np.where((x=='A') | (x=='B')) 
Out: (array([0, 1, 2, 3, 6], dtype=int64),) 

np.where(np.logical_or(x=='A', x=='B')) 
Out: (array([0, 1, 2, 3, 6], dtype=int64),) 
+0

Если у меня есть большое условие, i.e x == 'A', x == 'B', x == 'C', x == 'D'. Как я могу использовать список для этого? как x == что-то из ['A', 'B', 'C', 'D']? –

+0

Вы можете использовать 'in1d':' np.in1d ​​(x, ['A', 'B', 'C', 'D']) '(Это будет условие внутри np.where) – ayhan

Смежные вопросы