見出し画像

GCI (東京大学オンライン講義)第3回 練習問題 3 【解説あり】

GCI (東京大学オンライン講義)第3回 練習問題 2 【解説あり】の続きです。

問1
(1) 0~99までの100個の連続整数を値にもつ1次元のnp.ndarrayを作成し,shapeが(10, 10)の2次元配列となるように整形してください。

a = np.arange(0, 100) #make ndarray 0~99 
a = a.reshape(10,10) #shape(10,10)
print(a)

np.arrange()を用いて0~99のndarrayを作成して、reshape()で10×10の2次元配列に成形するだけです。

(2) (1)の配列から偶数行目を抜き出したshapeが(5, 10)の2次元配列を作成してください。
ただし行は0から数えます。

print(a[[0,2,4,6,8]]) #even column

np.array[[number]]で行の抽出をすることができる。

実行結果
[[ 0 1 2 3 4 5 6 7 8 9]
[20 21 22 23 24 25 26 27 28 29]
[40 41 42 43 44 45 46 47 48 49]
[60 61 62 63 64 65 66 67 68 69]
[80 81 82 83 84 85 86 87 88 89]]

(3) (1)の配列から奇数列目を抜き出したshapeが(10, 5)の2次元配列を作成してください。ただし列は0から数えます。

print(a[:, [1,3,5,7,9]]) #odd row

np.array[[number]]で指定した列の抽出ができる。

実行結果
[[ 1 3 5 7 9]
[11 13 15 17 19]
[21 23 25 27 29]
[31 33 35 37 39]
[41 43 45 47 49]
[51 53 55 57 59]
[61 63 65 67 69]
[71 73 75 77 79]
[81 83 85 87 89]
[91 93 95 97 99]]

(4) (1)の配列から,偶数行目かつ奇数列目にある値を要素にもつshapeが(5, 5)の2次元配列を作成してください。
ただし行と列は0から数えます。

print(a[np.ix_([0,2,4,6,8], [1,3,5,7,9])]) ##even column & odd row

np.ix_()を用いることで、わかりやすく行と列を抽出できます。
np.array[np.ix_([row],[column])

実行結果
[[ 1 3 5 7 9]
[21 23 25 27 29]
[41 43 45 47 49]
[61 63 65 67 69]
[81 83 85 87 89]]

~最後に~
最後まで読んでいただき、ありがとうございます。質問や間違えているところがあればコメントで教えていただければ嬉しいです。アドバイスなどもしていただければありがたいです。これからも投稿していこうと思っているのでよろしくお願いします!

練習問題 2はこちらです、是非見てください!

この記事が気に入ったらサポートをしてみませんか?