NumPyの集合演算をまとめてみた

スポンサーリンク

読者の今回は、Pythonで普遍的なNumPyの集合演算を学びます。


スポンサーリンク

便利なNumpyのセット操作

今回は5つの便利なnumpyのセット操作について説明します。

    1. numpy.unique(array)
    1. numpy.union1d(array,array).
  1. numpy.intersect1d(array,array,assume_unique) 3.
    1. np.setdiff1d(arr1, arr2, assume_unique=True).
  2. 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プログラミングに関連するこのような記事のために、私たちと一緒にご期待ください。

タイトルとURLをコピーしました