NumPy で 2つの配列の組み合わせを取得する
-
Python の
itertools.product()関数で NumPy 配列の組み合わせを取得する -
Python の
numpy.meshgrid()関数で NumPy 配列の組み合わせを取得する -
Python の
for-inメソッドで NumPy 配列の組み合わせを取得する
この記事では、Python で 2つの NumPy 配列のデカルト積を見つける方法を紹介します。
Python の itertools.product() 関数で NumPy 配列の組み合わせを取得する
itertools パッケージは、組み合わせと順列に関連する多くの機能を提供します。2つの反復可能な itertools.product() 関数デカルト積を使用できます。itertools.product() 関数は、入力パラメーターとして iterables を受け取り、iterables のデカルト積を返します。
import itertools as it
import numpy as np
array = np.array([1, 2, 3])
combinations = it.product(array, array)
for combination in combinations:
print(combination)
出力:
(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)
(2, 3)
(3, 1)
(3, 2)
(3, 3)
上記のコードでは、itertools パッケージ内の product() 関数を使用して、array のデカルト外積を計算し、その結果を combinations に格納しました。
Python の numpy.meshgrid() 関数で NumPy 配列の組み合わせを取得する
NumPy パッケージ内の meshgrid() 関数を使用して、2つの NumPy 配列のデカルト積を計算することもできます。numpy.meshgrid() 関数は、配列を入力引数として受け取り、2つの配列の外積を返します。
import numpy as np
array = np.array([1, 2, 3])
combinations = np.array(np.meshgrid(array, array)).T.reshape(-1, 2)
print(combinations)
出力:
[[1 1]
[1 2]
[1 3]
[2 1]
[2 2]
[2 3]
[3 1]
[3 2]
[3 3]]
上記のコードでは、NumPy の meshgrid() 関数を使用して、配列とそれ自体のデカルト外積を計算しました。次に、この操作の結果を np.array() 関数を使用して配列に変換し、numpy.reshape() 関数を使用して再形成しました。次に、新しい再形成された結果を combinations 配列内に保存しました。
Python の for-in メソッドで NumPy 配列の組み合わせを取得する
前の 2つの例と同じ目標を達成するためのもう 1つのより簡単な方法は、for-in イテレータを使用することです。for-in イテレータは、Python のイテレータ内の各要素を反復処理するために使用されます。このメソッドは、新しいパッケージやライブラリをインポートせずに使用できます。
import numpy as np
array = np.array([1, 2, 3])
array2 = np.array([1, 2, 3])
combinations = np.array([(i, j) for i in array for j in array2])
print(combinations)
出力:
[[1 1]
[1 2]
[1 3]
[2 1]
[2 2]
[2 3]
[3 1]
[3 2]
[3 3]]
上記のコードでネストされた for-in イテレータを使用して、両方の配列のデカルト外積を計算しました。結果は、np.array() 関数を使用して NumPy 配列 combinations 内に保存しました。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn