ホームページ >バックエンド開発 >Python チュートリアル >NumPy の「meshgrid」関数はどのようにして配列値のすべての組み合わせを効率的に生成できるのでしょうか?

NumPy の「meshgrid」関数はどのようにして配列値のすべての組み合わせを効率的に生成できるのでしょうか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-21 01:24:09286ブラウズ

How Can NumPy's `meshgrid` Function Efficiently Generate All Combinations of Array Values?

効率的な配列の組み合わせのための NumPy の利用

6 パラメーター関数の数値的動作を調査するには、パラメーター空間を走査する効率的な方法を探します。最初に、カスタム関数を使用して配列値を結合し、その後、reduce() を使用してそれを繰り返し適用しました。

NumPy を使用した効率的なソリューション

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。