電脳ヨーグルト

プログラミングの備忘録と私生活を

Numpyのインデックス参照、スライス、ビューについて

f:id:at25250410:20180815132114p:plain
歩き慣れたいつもの道中に、だいぶ弱った鷲が横たわっていたので、5分ほど見つめ合っていたのですが、動物病院に連絡するのもなんか違うなと思いその場を後にしました。

NumPyは、多次元配列を基本的なデータ構造として操作するライブラリです。

そのため、NumPyにはPythonのリストを使った演算ではなく、効率性などからndarrayという独自のデータ構造を使います。

NumPyは最適化された多次元配列をサポートし、最先端のアルゴリズムのデータ構造を使用しています。

インデックス参照

まずは、必要なNumPyのモジュールをインポートします。
f:id:at25250410:20180815134510p:plain

次に、データを準備します。

以下のように、0~9までの配列を作り、その変数名をsample_arrayとします。

f:id:at25250410:20180815134708p:plain

スライスとは、リストや文字列やタプル、NumPy配列などから、一部分を選択して取得したり別の値を代入したりすることです。

次の画像に、簡単なスライスの例があります。

f:id:at25250410:20180815135600p:plain

要素数10の元の配列から、前半の5つの要素を抽出しています。[0:5]は、0~5までという意味です。

boolインデックス参照

次は、ブールインデックス参照です。

boolとは、TrueオアFalseことで、boolを利用した、データ操作についてみていきましょう。

まずは、a, b, c, dの文字列が入ったNumPy配列と、5行5列の乱数配列を準備します。

f:id:at25250410:20180815142648p:plain

以下のように、

sample_names == 'a'

と書くと、sample_namesにある文字からaを探し、aがあればTrue無ければFalseを返します。
f:id:at25250410:20180815142842p:plain

また、以下のように

data[sample_names == 'a']

と書くと、この場合のsample_names == 'a'は、True, False, False, False, Trueなので、dataの1行目と、5行目のみ表示します。

f:id:at25250410:20180815143113p:plain