読者の今回は、Pythonで普遍的なNumPyの集合演算を学びます。
便利なNumpyのセット操作
今回は5つの便利なnumpyのセット操作について説明します。
-
-
numpy.unique(array)
。
-
-
-
numpy.union1d(array,array)
.
-
-
numpy.intersect1d(array,array,assume_unique)
3. -
-
np.setdiff1d(arr1, arr2, assume_unique=True)
.
-
- np.setxor1d(arr1, arr2, assume_unique=True)` 5.
これらの操作を個別に確認してみましょう.
1. NumPyの配列から一意な値
このnumpyの集合演算は、Pythonの配列要素の集合からユニークな値を見つけるのに役立ちます。
numpy.unique()`関数は、重複する値をすべてスキップし、配列からユニークな要素のみを表します。
構文は以下の様な感じです。
numpy.unique(array) |
例えば、以下の様になります。
この例では、配列の集合からユニークな要素を選択して表示するために unique() 関数を使用しています。
したがって、重複する値30はスキップされ、一度だけ選択されます。
import numpy as np
arr = np.array([ 30 , 60 , 90 , 30 , 100 ])
data = np.unique(arr)
print (data)
|
結果は以下の通りです。
[ 30 60 90 100 ]
|
2. NumPy の配列に和集合演算を設定する
NumPy は、両方の配列に対して UNION 操作を行う普遍的な関数 union1d()
を提供します。
つまり、両方の配列から値を取り出し、それらを表現します。
構文は以下の様な感じです。
numpy.union1d(array,array) |
例えば、以下の様になります。
import numpy as np
arr1 = np.array([ 30 , 60 , 90 , 30 , 100 ])
arr2 = np.array([ 1 , 2 , 3 , 60 , 30 ])
data = np.union1d(arr1,arr2)
print (data)
|
結果は以下の通りです。
[ 1 2 3 30 60 90 100 ]
|
3. NumPy 配列に交差演算を設定する
intersect1d() 関数` は、配列に対して INTERSECTION 操作を行うことを可能にします。
つまり、両方の配列から共通の要素を選択し、表現します。
構文は以下の様な感じです。
numpy.intersect1d(array,array,assume_unique) |
- assume_unique: TRUE を指定すると、重複する値も含めて交差演算を行う。FALSE に設定すると、交差演算のために重複する値を削除します。
例えば、以下の様になります。
ここでは、assume_unique
を TRUE に設定したので、重複する値を含む交差演算が行われました。
つまり、両方の配列から共通の値を選択し、それらの共通要素の重複も選択します。
import numpy as np
arr1 = np.array([ 30 , 60 , 90 , 30 , 100 ])
arr2 = np.array([ 1 , 2 , 3 , 60 , 30 ])
data = np.intersect1d(arr1, arr2, assume_unique = True )
print (data)
|
結果は、以下の通りです。
[ 30 30 60 ]
|
4. NumPy の配列で一般的でない値を見つける
setdiff1d()` 関数を使用すると、関数に渡されたパラメータに従って、1番目の配列から2番目の配列に存在しないすべての要素を見つけ、表現することができます。
import numpy as np
arr1 = np.array([ 30 , 60 , 90 , 30 , 100 ])
arr2 = np.array([ 1 , 2 , 3 , 60 , 30 ])
data = np.setdiff1d(arr1, arr2, assume_unique = True )
print (data)
|
結果は以下の通りです。
[ 90 100 ]
|
5. 対称的な差分
setxor1d()` 関数を使うと,配列の要素間の対称的な差分を計算することができます.つまり,両方の配列で共通しない要素をすべて抽出して表現します.つまり,配列から共通する値をすべて取り除き,両配列で異なる値を表現します.
例えば、以下の様になります。
import numpy as np
arr1 = np.array([ 30 , 60 , 90 , 30 , 100 ])
arr2 = np.array([ 1 , 2 , 3 , 60 , 30 ])
data = np.setxor1d(arr1, arr2, assume_unique = True )
print (data)
|
結果は以下の通りです。
[ 1 2 3 90 100 ]
|
まとめ
ここまでで、このトピックは終了です。
何か疑問があれば、お気軽にコメントください。
Pythonプログラミングに関連するこのような記事のために、私たちと一緒にご期待ください。