前言
在机器学习或者深度学习中经常需要统计矩阵(也可看做多维数组)中行列不为0元素的个数,这时就需要用到numpy中的np.count_nonzero()函数。
作用
np.count_nonzero()是用于统计矩阵中非零元素的个数。
用法
np.count_nonzero(a, axis=None, *, keepdims=False),参数a: 为需要统计数组名;axis: 为统计的轴,当axis=0时统计数组y轴(每列)非零元素个数,当axis=1时统计数组每x轴(每行) 非零元素个数, 另外,axis可以为元组。为元组时统计的是多维矩阵的行列。keepdims用法暂时不清楚。
案例
a = np.array([[0, 1, 7, 0],
[3, 0, 2, 19]])
np.count_nonzero(a)
5
np.count_nonzero(a, axis=0)
array([1, 1, 2, 1])
np.count_nonzero(a, axis=1)
array([2, 3])
----------------------------
d = np.array([[[1,2,1],[0,1,2],[0,2,3],[0,2,3]],[[1,2,1],[0,1,2],[0,2,3],[0,2,3]]])
print(d)
'''
[[[1 2 1]
[0 1 2]
[0 2 3]
[0 2 3]]
[[1 2 1]
[0 1 2]
[0 2 3]
[0 2 3]]]
'''
print(np.count_nonzero(d,axis=0))
'''
[[2 2 2]
[0 2 2]
[0 2 2]
[0 2 2]]
'''
print(np.count_nonzero(d,axis=1))
'''
[[1 4 4]
[1 4 4]]
'''
print(np.count_nonzero(d,axis=(0,1))) #[2 8 8]
print(np.count_nonzero(d,axis=(0,1,2))) #18