クイズに挑戦して、Numpyの配列をもっと知ろう!第3弾だよ。
今日は、2次元配列をお勉強するよ。最後にクイズがあるから、挑戦してみてね。
よーし、頑張るぞー。
1次元配列の例として、0から9の整数の集まりを以下のように作ることができました。
import numpy as np
arr1d=np.arange(10)
print(arr1d)
実行した時の答えは、
[0 1 2 3 4 5 6 7 8 9]
となります。これを[0 1 2 3 4] と [5 6 7 8 9]に分けて、2次元配列を作ってみます。配列の形を変えるには、reshapeを使います。
arr2d=arr1d.reshape(2,5)
print(arr2d)
[[0 1 2 3 4]
[5 6 7 8 9]]
2次元配列の1行目(axis=0)を表示したい時には、arr2d[0]と指定します。
print(arr2d[0])
[0 1 2 3 4]
[0 1 2 3 4]のうち、真ん中の[1 2 3]を抜き取りたい時には、arr2d[0,1:4]とします。1:4のように配列を切り取ることをスライシングと言います。
print(arr2d[0,1:4])
[1 2 3]
食パンのスライスみたいだね。
そうだね。ちなみに、arr2d[:,1:4]にすると、1列目と2列目の両方からスライスできるよ。
print(arr2d[:,1:4])
[[1 2 3]
[6 7 8]]
この処理は、データの合計とかを出す時に、便利なんだよ。例えば、左の4列の和を一番右の列に計算したい時には、次のように書くよ。
arr2d[:,4]=arr2d[:,:4].sum(1)
print(arr2d)
[[ 0 1 2 3 6]
[ 5 6 7 8 26]]
0+1+2+3=6
5+6+7+8=26
という意味だね。
その通りだよ、きなこちゃん。このプログラムを省略せずに、丁寧に書くと、
arr2d[0:2,4]=arr2d[0:2,0:4].sum(axis=1)
となるよ。
データは2行しかないので、「0:2」の部分は「:」に省略できます。「0:4」の部分も0を省略して「:4」にでき、「sum(axis=1)」は「sum(1)」に省略できます。
[問題]Numpyの配列3
上に書かれた2次元配列のarr2dを使って、次の計算をしたら、答えは何になるでしょうか。
arr2d[0:2,1:4].sum(axis=0)