Remrinのpython攻略日記

python3に入門しました。python3についてあれこれとサンプルコードとか。

NumPyの使い方(10) 集合関数

NumPyの集合関数について。 
 
python標準のset型も参照。
 
1次元配列を対象とした集合関数

unique(x) 重複を除外し、ソートした配列
in1d(x,y) xの各要素がyに存在するか
intersect1d(x, ) 共通部分。積集合
union1d(x, y) 和集合
setdiff1d(x, y) 差集合
setxor1d(x, y) 排他的論理和

 

np.unique()

1次元の配列から重複を取り除き、ソートした配列を返す。
python標準のsorted(set(seq))と同様の働き。

import numpy as np

a1 = np.array([1, 3, 2, 0, 1, 2, 2, 1])
print(np.unique(a1))  # [0 1 2 3]

 
return_index=Trueとすると初回のインデックスを返す。
return_counts=Trueとすると、重複している回数を返す。

print(np.unique(a1, return_index=True))
# (array([0, 1, 2, 3]), array([3, 0, 2, 1], dtype=int32))

print(np.unique(a1, return_counts=True))
# (array([0, 1, 2, 3]), array([1, 3, 3, 1]))

 

in1d()

要素の存在判定をする関数

a1 = np.array([1, 3, 5, 5, 5, 1])
print(np.in1d(a1, [1, 2, 3]))
# [ True  True False False False  True]

print(np.in1d([1, 2, 3], a1))
# [ True False  True]