np.all()没有被执行

时间:2018-05-25 00:11:52

标签: python numpy

我写了一个剧本:

import numpy as np
a=[0,0,0]
if np.all(a==0):
    print('All are zeros!')

但没有打印出来。由于np.all(a==0)中的所有元素都是a[],因此0不能评估为真吗?

2 个答案:

答案 0 :(得分:3)

为了避免将列表a明确转换为numpy.ndarray,您可以直接致电numpy的比较运营商:

np.all(np.equals(a, 0))

但是,如果您的数据已经是Python列表,只需使用Python all()即可在numpy计算all()的时间内获得相同的结果In [1]: import random In [2]: import numpy as np In [3]: a = [random.random() for _ in range(1000000)] In [4]: %timeit all(x == 0 for x in a) 615 ns ± 21.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) In [5]: %timeit np.all(np.equal(a, 0)) 24.2 ms ± 2.04 ms per loop (mean ± std. dev. of 7 runs, 10 loops each) }:

Podfile

答案 1 :(得分:1)

a必须是一个numpy数组才能获得array([True, True, True])作为a == 0的结果。

a=[0,0,0]更改为a = np.array([0,0,0]),然后重试。