Numpy★便利な機能

2021年10月7日

Numpyをさわっていて便利だなーと思うものを書き残します。

ブーリアンマスク

配列の中の値を、ブーリアン(真理値)マスクによって絞り込みます。

書き方

ndarray[ 真理値 ]

【例】50より大きい数字のみ表示
import numpy as np
rand = np.random.RandomState(35)
 
x = rand.randint(0, 100, (4,3))
print(x)
[[73 15 55]
 [33 63 64]
 [11 11 56]
 [72 57 55]]
# ブーリアンマスクに使う値
x > 50
array([[ True, False,  True],
       [False,  True,  True],
       [False, False,  True],
       [ True,  True,  True]])
# ブーリアンマスクを適用
x[ x > 50 ]
array([73, 55, 63, 64, 56, 72, 57, 55])

ファンシーインデックス

ファンシーインデックスは普通の配列を操作する感覚に近いです(個人的には)。具体例でそれを感じてください。

書き方

ndarray[ インデックス ]

【例】一次元の場合
import numpy as np
rand = np.random.RandomState(31)

x = rand.randint(100, size=10)
print(x)
[82 87 16 98 23 58 28 93 92 42]
# ファンシーインデックスに使うインデックスを指定
indx = [1,5,6]
x[indx]
array([87, 58, 28])
【例】二次元の場合
x = rand.randint(100, size=(3,4))
print(x)
[[46  6 82 18]
 [25 81 23 28]
 [10 84 44 75]]
# ファンシーインデックスに使うインデックスを指定
row = np.array([0, 2, 1])
col = np.array([2, 1, 3])
x[row, col]
array([82, 84, 28])

NumPy

Posted by Bright_Noah