Help us understand the problem. What is going on with this article?

numpyのスライシング

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]

こちらもベクトルである!!!分かりづらい。。。

まとめ

よく考えたら自明だった;

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away