質問: data[:,1:3] # 2,3列目がデータ ``` 調べて見ると、「行:列」でスライスができるという記述があったのですが、上記のコードでこのようなスライスが行われるのが理解できません 出力としては、全ての行から二列目と三列目が取得されています。 ":"や","の意味やコードを文章で説明していただけたらありがたいです。 よろしくお願いいたします。
回答: まず、 > > 「行:列」でスライスができる > > というのは間違った情報です、忘れてください。 > > > はじめに`:`の説明から。 pythonのリストやnumpy配列でのスライスは `i:j:n` の形式で行います。 ここで`i` は開始インデックス、 `j` は終了インデックスを表しており、 i以上でjより小さいインデックス(i <= n < j)でスライスされます。 次に `n` ですが、これはステップ数を表しますが、ステップ数は1の時は省略して`i:j`のみの記述をすることができます。 ですので質問にある `1:3` は1以上で3より小さいインデックス値 ー (1,2)にスライスされることになります。 また、`i`や`j` の値も省略することが可能です。 `i` が省略された場合は `i = 0` が設定され、 jが省略された場合は`j = (配列のサイズ)`が設定されます。 ですので `5:` インデックス値 5から最後まででスライス `:5` 最初からインデックス値 4 まででスライス `:` 最初から最後まで(配列全体)でスライス ということになります。 最後に、`,` の説明ですが、numpyでの2次行列の場合 `data[行の指定,列の指定]` の記述にて行列から一部をスライスすることができます。 ``` data[:,1:3] ``` は **行**は `:` (行全体)を指定 **列**は `1:3` インデックス(1,2)を指定 となります。