Pythonでは、どちらが速いですか?
numpy.max(), numpy.min()
また
max(), min()
リスト/配列の長さは2から600までさまざまです。実行時間を節約するためにどちらを使用すればよいですか?
私のタイミングからすると、すでにnumpy配列a
を使用する必要がある場合は、次のようになります(ソースは、使用可能な場合a.max
と同じであると示しています)。ただし、組み込みのリストがある場合は、ほとんどの場合、リストをnp.ndarray =>に変換する必要があります。そのため、タイミングが優れています。np.max
a.max
max
本質的には、if np.ndarray
then a.max
、if、thenstandardlist
のすべての機械は必要ありません。np.ndarray
max
私もこれに興味があり、perfplot(私の小さなプロジェクト)で3つのバリアントをテストしました。結果:。で問題が発生することはありませんa.max()
。
プロットを再現するコード:
import numpy as np
import perfplot
b = perfplot.bench(
setup=np.random.rand,
kernels=[max, np.max, lambda a: a.max()],
labels=["max(a)", "np.max(a)", "a.max()"],
n_range=[2 ** k for k in range(25)],
xlabel="len(a)",
)
b.show()
Pythontimeitモジュールのようなものを使用して自分でテストするのがおそらく最善です。そうすれば、必ずしも自分のデータを代表しているとは限らないさまざまなテストデータや環境を持つサードパーティに依存するのではなく、自分の環境で自分のデータをテストできます。
numpy.min
ビルトインとnumpy.max
はセマンティクス(および呼び出しシグネチャ)がわずかに異なるため、速度を選択するべきではありません。多次元データを適切に処理できるようにする必要がある場合は、numpyバージョンを使用してください。Pythonリストなど、次元を知らないものを使用している場合は、ビルトインを使用してください。