为什么numpy.count_nonzero(arr)不能与指定的轴值一起使用?

时间:2017-06-18 18:25:32

标签: python arrays numpy

我有一个二维数组,想按行计算值。即使我指定了一个轴值,轴= 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

任何想法可能会阻止该方法从多行返回一组计数?

1 个答案:

答案 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_nonzerononzero)使用

where来确定为返回结果而需要分配的数组的大小。为此,它不需要轴参数。它只需要快速而简单。如果开发人员将这种使用视为主要理由,那么可以解释为什么axis是一个后期添加。