2016-06-21 4 views
0

Допустим, у меня есть Numpy массив, как показано ниже:Как получить индексы значений Numpy массива, которые равны нулю

array([ 1. , 2. , 0. , 3.4, 0. , 1.1]) 

Теперь я хочу, чтобы получить индексы всех элементов, которые равны нулю. Причина в том, что я хочу получить эти индексы, а затем для другого массива, я хочу преобразовать элементы с одинаковыми индексами в нуль.

Чтобы получить индексы, отличные от нуля, я знаю, что мы можем использовать ненулевые или argwhere.

np.nonzero(a) 

(array([0, 1, 3, 5]),) 

Тогда позволяет сказать, что у меня есть массив б я могу использовать список выше индексов и конвертировать все элементы массива б с одинаковыми индексами к нулю, как показано ниже:

b[np.nonzero(a)]=0 

Это хорошо, но это для ненулевых индексов. Как получить нулевые индексы.

ответ

4

Если вы просто хотите использовать результат для целей индексации, это более эффективно, чтобы сделать булев массив, чем массив индексов:

a == 0 

Вы можете индексировать с таким же, как вы, использовавшимся массив индексов:

b[a == 0] = 0 

Если вы действительно хотите, массив индексов, вы можете вызвать np.nonzero на булевом массиве:

np.nonzero(a == 0) 

np.where также работает.

+0

Ницца! благодаря!!! – Baktaawar

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