我写了一个脚本:
import numpy as np
a=[0,0,0]
if np.all(a==0):
print('All are zeros!')
但是没有打印出来。 np.all(a==0)
不应该评估为 True 因为 a[]
中的所有元素都是 0
吗?
最佳答案
为了避免将列表a
显式转换为numpy.ndarray
,可以直接调用numpy
的比较运算符:
np.all(np.equals(a, 0))
但是,如果您的数据已经是 Python 列表,只需使用 Python 的 all()
即可获得相同的结果,所用时间仅为 numpy
计算时间的一小部分所有()
:
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)
关于python - np.all() 没有被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50519820/