
80
2
章
NumPy
の基礎
In[10]: X[2, [2, 0, 1]]
Out[10]: array([10, 8, 9])
ファンシーインデクスとスライスの組み合わせは次のようになります。
In[11]: X[1:, [2, 0, 1]]
Out[11]: array([[ 6, 4, 5],
[10, 8, 9]])
ファンシーインデクスとマスクの組み合わせも可能です。
In[12]: mask = np.array([1, 0, 1, 0], dtype=bool)
X[row[:, np.newaxis], mask]
Out[12]: array([[ 0, 2],
[ 4, 6],
[ 8, 10]])
これらすべてのインデクス方法を組み合わせることで、配列値にアクセスして変更するための非
常に柔軟な
操作が可能となります。
2.7.3
事例:ランダムポイントの選択
ファンシーインデクスの一般的な使用法の
1
つが、行列から行のサブセットを選択することです。
例えば、
2
次元正規分布に従う
D
次元の
N
ポイントを表す
N
行
D
列の行列があるとします。
In[13]: mean = [0, 0]
cov = [[1, 2],
[2, 5]]
X = rand.multivariate_normal(mean, cov, 100)
X.shape
Out[13]: (100, 2)
第
4
章で説明するツールを使用して、これらの点を散布図として可視化できます(図 2-7)。
In[14]: %matplotlib inline ...