Pythonで始める機械学習に手を出し初めたのだが、numpyを扱うのが初めてなので調べながら進めている。
スライシングについて忘れそうなので、ここに纏めておく
まず行列を作る
テキトーに3×5行列を作る
a = np.arange(15).reshape(3, 5)
出力
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
スライシング
スライシングとは行列において特定の範囲の要素のみ抜き出す操作です。
二次元行列であれば[start:end:step, start:end,step]
で記述します。
0~1行、0~1列を抜き出したいなら
b = a[0:2, 0:2]
出力
[[0 1]
[5 6]]
省略もできるよ。
[start:end:step, start:end,step]
各パラメータは省略することができる。
行のendを省略してみる。そうすると、最後の行まで選択される。
b = a[0:, 0:2]
出力
[[ 0 1]
[ 5 6]
[10 11]]
「:」を抜くとどうなるん?
「Pythonで始める機械学習」では時々「:」を入力していないので、これもどんな効果があるのか試してみる。
b = a[2, 4]
出力
14
単に2行目、4列目(右下)の要素が出力された。
「:」を省略すると、単に要素を指定できる。
片方の「:」を抜くとどうなるん?
面白くなってきたので、列の「:」のみ取り除いてみる。
b = a[:, 4]
出力
[ 4 9 14]
と、4列に位置する要素のみベクトルの形で出力できた。
行の「:」を抜くとどうなるの?
b = a[2, :]
出力
[10 11 12 13 14]
こちらもベクトルである!!!分かりづらい。。。
まとめ
よく考えたら自明だった;