python - np.all() 没有被执行

标签 python numpy

我写了一个脚本:

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/

相关文章:

python - Django默认用户权限

Python - 使用前 2 个元素转换列

python - 如何在 PySpark Word2vec 模型中设置迭代次数?

python - 删除满足条件的子系列(数据框中的行)

python - 在 numpy 数组中切片和在 Python 中切片有什么区别?

python - 将Python float 传递给C函数时,舍入模式不一致

c++ - Python 在加载 C++ 编写的扩展模块时收到 SIGSEGV

python - 生成连接范围的 1D​​ NumPy 数组

python 不使用更新的 pip scipy 包

python - 如何为 pandas 数据框中的一行中的连续零构建掩码(True 或 False)?