Как посчитать определенный элемент строки / столбца в ndarray? - PullRequest
0 голосов
/ 23 октября 2019

У меня есть массив NumPy:

[0, 0, 0, 1, 0, 1]
[1, 0, 0, 0, 0, 1]
[1, 0, 0, 0, 0, 1]

Есть ли какая-либо функция NUMPY, которая будет считать, скажем, 0 (или любой другой элемент) в каждой строке (или столбце)? например,

[4]
[3]
[4]

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Использование sum для массива с логической маской

(arr == number).sum(1)

>>> (arr == 0).sum(1)
array([4, 4, 4])

>>> (arr == 1).sum(1)
array([2, 2, 2])

Всегда может измениться в конце

>>> (arr == 0).sum(1).reshape(-1,1)
array([[4],
       [4],
       [4]])
0 голосов
/ 23 октября 2019

Выполняя сравнение A == 0, numpy возвращает массив логических значений, которые можно затем суммировать, поскольку они интерпретируются как 1 и 0 для True и False соответственно:

>>> A = np.array([
...     [0, 1, 0, 1, 0, 1],
...     [1, 0, 0, 0, 0, 1],
...     [1, 0, 0, 0, 0, 0],
... ])
>>> np.sum(A == 0, axis=0)
array([1, 2, 3, 2, 3, 1])
>>> np.sum(A == 0, axis=1)
array([3, 4, 5])
...