Учитывая массив numpy:
arr = [0,0,0,0,0,2,0]
Как я могу извлечь в новый массив все нулевые элементы:
new_arr = [0,0,0,0,0,0]
И ненулевые элементы:
new_arr_2 = [2]
Я попытался преобразовать массив в список и с помощью цикла for. Кроме того, я пробовал с:
np.argwhere(arr == 0).ravel()
Однако я просто получаю индексы. Любая идея о том, как извлечь нулевые и ненулевые или даже определенные числовые значения с помощью numpy?






Используя numpy.where, вы можете получить индексы элементов, удовлетворяющих вашему условию, и получить соответствующее значение:
import numpy as np
arr = np.array([0,0,0,0,0,2,0])
new_arr_0 = arr[np.where(arr==0)]
new_arr_no_0 = arr[np.where(arr!=0)]
Конечно, как предложили @Sheldore и @DeveshKumarSingh, вы можете просто использовать:
new_arr_0 = arr[arr==0]
new_arr_no_0 = arr[arr!=0]
Для небольших массивов вы не должны найти больших различий в скорости вычислений.
что, если я хочу извлечь все 2 из моего массива?
Тогда new_arr_2 = arr[np.where(arr==2)]
@anon: Просто используй arr[arr==2]
Вы можете использовать понимание списка вместо использования numpy :
arr = [0,0,0,0,0,2,0]
new_arr = [a for a in arr if a == 0]
new_arr_no_zero = [a for a in arr if a != 0]
Просто используйте
arr[arr==0]иarr[arr!=0]