Вы бы использовали тот же метод, что и этот вопрос (упоминается в комментариях @yatu), но вместо этого вызовите метод numpy.nonzero()
.
Чтобы получить только ненулевые элементы, мы можем просто вызвать метод nonzero
, который вернет индексы ненулевых элементов.Мы можем сделать это с помощью этой команды, если a является пустым массивом:
a[nonzero(a)]
Пример поиска режима (построение кода из другого ответа):
import numpy as np
from scipy import stats
a = np.array([
[1, 0, 4, 2, 2, 7],
[5, 2, 0, 1, 4, 1],
[3, 3, 2, 0, 1, 1]]
)
def nonzero_mode(arr):
return stats.mode(arr[np.nonzero(arr)]).mode
m = map(nonzero_mode, a)
print(m)
Если вы хотите получить режим каждой строки, просто используйте цикл через массив:
for row in a:
print(nonzero_mode(row))