ホームページ >バックエンド開発 >Python チュートリアル >NumPy の「meshgrid」関数はどのようにして配列値のすべての組み合わせを効率的に生成できるのでしょうか?
6 パラメーター関数の数値的動作を調査するには、パラメーター空間を走査する効率的な方法を探します。最初に、カスタム関数を使用して配列値を結合し、その後、reduce() を使用してそれを繰り返し適用しました。
NumPy の新しいバージョン (1.8.x 以降) は、はるかに優れたソリューションである numpy.meshgrid() を提供します。この関数を使用すると、入力配列の可能なすべての組み合わせを含む多次元配列を作成できます。あなたの場合:
import numpy as np a = np.arange(0, 1, 0.1) combinations = np.array(np.meshgrid(a, a, a, a, a, a)).T.reshape(-1, 6)
次のベンチマークで示されているように、このアプローチによりパフォーマンスが大幅に向上します:
%timeit np.array(np.meshgrid(a, a, a, a, a, a)).T.reshape(-1, 6) # Output: 10000 loops, best of 3: 74.1 µs per loop
あるいは、次のカスタム関数を使用して最大限の制御を行うこともできます:
def cartesian(arrays): arr = np.empty((len(arrays.shape), len(arrays))) for n, array in enumerate(arrays): arr[n, :] = array return arr.T.reshape(-1, len(arrays)) %timeit cartesian([a, a, a, a, a, a]) # Output: 1000 loops, best of 3: 135 µs per loop
以上がNumPy の「meshgrid」関数はどのようにして配列値のすべての組み合わせを効率的に生成できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。