配列によるインデックス参照
Coddyの「NumPyの基礎」コースのレッスン 12/18。
Numpyのもう一つの優れた機能は、配列から特定のインデックスを選択できることです。[] ブラケットの中に List を配置し、選択したいインデックスを指定します:ary[indices]
例 1
0番目、2番目、4番目 の要素を取得します:
x = np.arange(5, 15) # np.array([5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
x[[0, 2, 4]]
>>> [5, 7, 9]例 2
最初と最後の要素を取得します(今回は2次元配列から):
x = np.array([[0, 1], [2, 3], [4, 5], [6, 7]])
x[[0, -1]]
>>> [[0, 1], [6, 7]]2次元配列から特定の要素を取得する場合はどうすればよいでしょうか?
ary[[行のインデックス], [要素のインデックス]] を使用します。
例 3
2行目 と 3行目 から最初と最後の要素を取得します
x = np.array([
[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23],
])
x[[1, 1, 2, 2], [0, -1, 0, -1]]
>>> [6, 11, 12, 17]何が起きたのでしょうか?
Numpyはブラケット [] 内の各リストの対応するインデックスを確認し、要素を返します:
x[[1, 1, 2, 2], [0, -1, 0, -1]]
x[1, 0] # --> 6x[1, -1] # --> 11x[2, 0] # --> 12x[2, -1] # --> 17
すべての行から最初と最後のインデックスを取得するにはどうすればよいでしょうか?
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
チャレンジ
簡単2次元配列 ary が与えられたとき、このレッスンで学んだ方法を使用して、5で割り切れる(余りがない)すべての数値(0, 5, 10, ...)を取得してください。
自分で試してみよう
import numpy as np
'''
ary looks like:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
'''
ary = np.arange(0, 20).reshape(4, 5) # don't change ary
res = ary[] # <-- Complete indices
print(str(res).replace("\n", "")) # don't change this line