我有一个二维数组,想按行计算值。即使我指定了一个轴值,轴= 1,方法仍然会返回单个整数。
x = rng.randint(10, size=(6,3))
x
Out[120]:
array([[3, 3, 8],
[8, 8, 2],
[3, 2, 0],
[8, 8, 3],
[8, 2, 8],
[4, 3, 0]])
np.count_nonzero(x)
Out[121]: 16
np.count_nonzero(x, axis=1)
Out[122]: 16
我尝试直接从文档页面复制示例并获得相同的结果。
np.count_nonzero([[0,1,7,0,0],[3,0,0,2,19]], axis=1)
Out[123]: 5
预期的地方:
array([2, 3])
我使用的是Python 3.6
任何想法可能会阻止该方法从多行返回一组计数?
答案 0 :(得分:1)
来自v1.12文档:
axis : int or tuple, optional
Axis or tuple of axes along which to count non-zeros.
Default is None, meaning that non-zeros will be counted
along a flattened version of ``a``.
.. versionadded:: 1.12.0
所以这个轴参数是新的。
count_nonzero
(nonzero
)使用 where
来确定为返回结果而需要分配的数组的大小。为此,它不需要轴参数。它只需要快速而简单。如果开发人员将这种使用视为主要理由,那么可以解释为什么axis
是一个后期添加。