我写了一个剧本:
import numpy as np
a=[0,0,0]
if np.all(a==0):
print('All are zeros!')
但没有打印出来。由于np.all(a==0)
中的所有元素都是a[]
,因此0
不能评估为真吗?
答案 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])
,然后重试。