41

Pythonでは、どちらが速いですか?

numpy.max(), numpy.min()

また

max(), min()

リスト/配列の長さは2から600までさまざまです。実行時間を節約するためにどちらを使用すればよいですか?

4

4 に答える 4

55

私のタイミングからすると、すでにnumpy配列aを使用する必要がある場合は、次のようになります(ソースは、使用可能な場合a.maxと同じであると示しています)。ただし、組み込みのリストがある場合は、ほとんどの場合、リストをnp.ndarray =>に変換する必要があります。そのため、タイミングが優れています。np.maxa.maxmax

本質的には、if np.ndarraythen a.max、if、thenstandardlistのすべての機械は必要ありません。np.ndarraymax

于 2012-06-08T05:22:00.043 に答える
34

私もこれに興味があり、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()
于 2017-04-05T11:08:11.713 に答える
12

Pythontimeitモジュールのようなものを使用して自分でテストするのがおそらく最善です。そうすれば、必ずしも自分のデータを代表しているとは限らないさまざまなテストデータや環境を持つサードパーティに依存するのではなく、自分の環境で自分のデータをテストできます。

于 2012-06-08T04:37:12.203 に答える
2

numpy.minビルトインとnumpy.maxはセマンティクス(および呼び出しシグネチャ)がわずかに異なるため、速度を選択するべきではありません。多次元データを適切に処理できるようにする必要がある場合は、numpyバージョンを使用してください。Pythonリストなど、次元を知らないものを使用している場合は、ビルトインを使用してください。

于 2012-06-08T04:39:15.960 に答える