1

我有代码:

def find_zeros(data):
    '''creates a list of the indexes of the zeros in the data'''
    zeroidx=np.where(np.any(data==0, axis=1))
    print zeroidx
    return len(zeroidx) 

但结果是:

(array([525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537,
       538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
       551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
       564, 565], dtype=int64),)

这给出了长度1

如何找到数字数组的长度?

这会找到零点的位置。基本上我只想知道数据中有多少个零?有没有更好的方法?

4

2 回答 2

5

只需检查零值并在结果布尔数组上调用 sum:

(data == 0).sum()

这是一个更通用的解决方案,可用于查找数组中的任何值,而不仅仅是零和非零数字。

它甚至表现得稍微好一点但微不足道count_nonzero(数组长度为 100000000):

%timeit (a == 0).sum()
1 loops, best of 3: 249 ms per loop

%timeit len(a) - numpy.count_nonzero(a)
1 loops, best of 3: 326 ms per loop
于 2013-09-17T17:41:09.710 回答
5
len(data) - numpy.count_nonzero(data)

有一个内置的。

于 2013-09-17T17:41:35.447 回答