Python/NumPyの3つの "all"メソッドの違いは何ですか?パフォーマンスの違いは何故ですか? ndarray.all()が常に3つの中で最も速いのは本当ですか?ここでNumPy ndarray.all()vs np.all(ndarray)vsすべて(ndarray)
は、私が走ったタイミングテストです:
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
Pythonの 'all'は' a'を繰り返します。すべての(a)、すべて(iter(a))、すべて(list(a))、すべて(a.tolist())しかし、「すべて」は短絡する可能性があります。 'a [2] = False'を設定し、非常に異なる時を見ます。 – hpaulj
'np.all'も短絡していますか?また、 'all(a.tolist())'は私のコンピュータの 'all(a)'よりもはるかに高速です(2-3回)。これは主に、 'tolist'メソッドが配列をPythonオブジェクトのリストとしてラップするために最適化されているためです。 – MSeifert