dkv*_*dkv 7 python performance numpy
Python/NumPy中三个"all"方法之间的区别是什么?性能差异的原因是什么?ndarray.all()总是三者中最快的吗?
这是我运行的计时测试:
In [59]: a = np.full(100000, True, dtype=bool)
In [60]: timeit a.all()
The slowest run took 5.40 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 5.24 µs per loop
In [61]: timeit all(a)
1000 loops, best of 3: 1.34 ms per loop
In [62]: timeit np.all(a)
The slowest run took 5.54 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 6.41 µs per loop
Run Code Online (Sandbox Code Playgroud)
np.all(a)和之间的区别a.all()很简单:
a是,numpy.array则np.all()只需拨打电话即可a.all().a不是numpy.array,np.all()则将其转换为a numpy.array然后调用a.all().a.all()另一方面,因为a不是a numpy.array而失败,因此可能没有all方法.np.all和之间的区别all更复杂.
all函数适用于任何可迭代(包括list,sets generators,...).np.all仅适用于numpy.arrays(包括可以转换为numpy数组的所有内容,即lists和tuples).np.all处理array具有指定数据类型的数据,这使得它在比较时非常有效!= 0.all但是需要bool对每个项目进行评估,这要慢得多.np.all不需要进行转换.请注意,时间也取决于您的类型a.如果你处理一个python列表,all对于相对较短的列表可以更快.如果您处理一个阵列,np.all并且a.all()将在几乎所有情况下更快(除非是object数组,但我不会走这条路,那路就疯狂).
| 归档时间: |
|
| 查看次数: |
4142 次 |
| 最近记录: |