和風ましらに

機械学習とか勉強したことを書き認めるブログ

Numpy関数について -集合関数系

numpyの中のよく使う集合関数について整理。 単にデータ処理するだけでなく、エラーの原因を調べるためにも重宝します。

よく使う集合関数

insersect1d関数

重複しているものだけを取り出したい時。

(例)
[in]
np.intersect1d([1, 3, 4, 3], [3, 1, 2, 1])

[out]
array([1, 3])

このままだと2次元配列には使用できないですが、reduce と組み合わせることで2次元配列でも対応可能。

(例)
[in]
from functools import reduce

reduce(np.intersect1d, ([1, 3, 4, 3], [3, 1, 2, 1], [6, 3, 4, 2]))

[out]
array([3])

isin関数

1番目の引数の配列の各要素が、2番目の引数の配列に含まれるかどうかの真偽値を返す。

(例)
[in]
nobel = 2*np.arange(4).reshape((2, 2))    #array([[0, 2],[4, 6]])
lab =[[0,2],[1,4]]
mask = np.isin(nobel, lab)

[out]
array([[ True,  True], [ True, False]])

setdiff1d関数

1番目の引数の配列の各要素から、2番目の引数の配列に含まれる要素を除外した要素を返す。結果はソートされて返る。

(例)
[in]
setdiff1d = np.setdiff1d(nobel, lab)
setdiff1d

[out]
array([6])

unique関数

1次元の配列から重複を取り除き、ソートした配列を返す。

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

[out]
[0 1 2 3]