[NumPyの使い方] 11. ファンシーインデックス

NumPy
スポンサーリンク

ファンシーインデックスの使い方

1次元配列のファンシーインデックス

データの生成

np.random.randint(100, size=8)で0〜99までの整数を8個もつ配列が生成する。

インデックスの指定によるアクセス

配列のインデックスを指定することで各要素を参照できる。

リストによるアクセス

インデックスのリストを作成して、そのリストを配列に適用することで、インデックスに対応する配列の要素を参照できる。

インデックスに2次元配列を用いる場合

要素としてインデックスをもつ2次元配列(ind)を配列(X)に適用すると、
インデックスの配列(ind)と同じ形の要素の配列が得られる。

2次元配列のファンシーインデックス

データの生成

np.arange(9).reshape(3,3) で0〜8の配列を作って、reshapeで3×3の形にしている。

行、列のインデックスを指定

rowの行のインデックス、colに列のインデックスを設定して、[row,col]を配列に適用する。
その結果、
1コ目の要素は1行目2列目の5,
2コ目の要素は2行目0列目の6,
3コ目の要素は2行目1列目の7となる。

ブロードキャストの適用

まず、配列rowに対して、[:,np.newaxis]とすることで、形状を(1,3)にする。

インデックスに[(1,3),(3,1)]の形状のものを指定することでインデックスがブロードキャストされる。

[NumPyの使い方] 7. ブロードキャスト
NumPyによるブロードキャスト

そのため、帰ってくる配列の形状は(3,3)となる。

参考

Pythonデータサイエンスハンドブック ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習

コメント