1. ホーム
  2. python

[解決済み] xとyの配列点のデカルト積を1つの2次元点配列にしたもの

2022-04-20 16:42:56

質問

グリッドのX軸とY軸を定義する2つのnumpy配列を持っています。 例えば

x = numpy.array([1,2,3])
y = numpy.array([4,5])

これらの配列のデカルト積を生成して生成したい。

array([[1,4],[2,4],[3,4],[1,5],[2,5],[3,5]])

ループで何度もやる必要があるので、ある意味、ものすごく効率が悪いわけではありません。 私は、Pythonのリストに変換して itertools.product で、numpyの配列に戻すというのは、最も効率的な形ではありません。

どのように解決するのですか?

>>> numpy.transpose([numpy.tile(x, len(y)), numpy.repeat(y, len(x))])
array([[1, 4],
       [2, 4],
       [3, 4],
       [1, 5],
       [2, 5],
       [3, 5]])

参照 numpyを使って、2つの配列のすべての組み合わせの配列を作成する は、N 個の配列のデカルト積を計算するための一般的な解法です。