Numpy 配列の関数のベクトル化
Numpy 配列上に関数を効率的にマップするには、ベクトル化の機能を利用できます。配列に対して要素ごとに操作を実行します。これは、リスト内包表記などのループベースのアプローチを使用するよりもはるかに高速です。
NumPy ネイティブ関数
マップする関数がすでに NumPy 関数としてベクトル化されている場合は、要素を二乗するための np.square() など、それを使用することを強くお勧めします。他の方法よりも大幅に高速になります。
NumPy の Vectorize によるベクトル化
NumPy は、関数をベクトル化するための Vectorize 関数を提供します。関数をラップして、配列に対する要素ごとの操作を有効にします:
import numpy as np def f(x): return x ** 2 vf = np.vectorize(f) x = np.array([1, 2, 3, 4, 5]) squares = vf(x)
もう 1 つの方法は、関数ラッパーを初期化せずにベクトル化を使用することです:
squares = np.vectorize(f)(x)
その他のベクトル化メソッド
その他のベクトル化方法include:
パフォーマンス考慮事項
これらのメソッドはすべて関数をベクトル化できますが、パフォーマンスは異なる場合があります。ベンチマークでは、NumPy のネイティブ関数が利用可能な場合は、それを使用するのが最も速いことが示されています。他のケースでは、vectorize と fromiter は通常、np.array(list(map(f, x))) よりもパフォーマンスが優れています。
以上がNumPy 配列に関数を効率的に適用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。