numpyのarrayの抽出②
numpy の2次元arrayの抽出をいろいろ試してみましょう。
まずは、1から始まり100までのデータを10×10に整形します。
ary1 = np.arange(1,101).reshape(10,10)
print(ary1)
実行結果:
[[ 1 2 3 4 5 6 7 8 9 10]
[ 11 12 13 14 15 16 17 18 19 20]
[ 21 22 23 24 25 26 27 28 29 30]
[ 31 32 33 34 35 36 37 38 39 40]
[ 41 42 43 44 45 46 47 48 49 50]
[ 51 52 53 54 55 56 57 58 59 60]
[ 61 62 63 64 65 66 67 68 69 70]
[ 71 72 73 74 75 76 77 78 79 80]
[ 81 82 83 84 85 86 87 88 89 90]
[ 91 92 93 94 95 96 97 98 99 100]]
これを使って、いろんな角度で抽出していきましょう。
任意の数字の抽出
変数ary1(1-100、10×10の上記表を想像してください)より数字にアクセスしたい時、基本知識として覚えておくべきこと。
変数名[行,列]
これが基本!
今回に置き換えると、
ary1[行,列]
となります。
では、変数ary1の全部の行列を取ってくるにはどうすればよいでしょうか。
答え:
ary1[:,:]
で全てのデータが見れます。『 : 』で全てという意味になります。
では、以下を実行してみて下さい。
print(ary1[0,2])
実行結果:
3
ary1の変数(1-100、10×10の表)をもう一度見てみましょう。
[[ 1 2 3 4 5 6 7 8 9 10]
[ 11 12 13 14 15 16 17 18 19 20]
[ 21 22 23 24 25 26 27 28 29 30]
[ 31 32 33 34 35 36 37 38 39 40]
[ 41 42 43 44 45 46 47 48 49 50]
[ 51 52 53 54 55 56 57 58 59 60]
[ 61 62 63 64 65 66 67 68 69 70]
[ 71 72 73 74 75 76 77 78 79 80]
[ 81 82 83 84 85 86 87 88 89 90]
[ 91 92 93 94 95 96 97 98 99 100]]
3は、左より行が1番目、列が3番目です。numpy は1からスタートではなく、0からスタートなので、3は、左より行が0番目、列が2番目になります。
そのため、3を抽出したければ、
ary1[0,2]
となります。
3列目(numpy2列目)を全て抽出したい場合
基本型はary1[行,列]なので、行は2で、列は全てということで、
print(ary1[2,:])
実行結果:
[31 32 33 34 35 36 37 38 39 40]
となります。
任意の1次元を抽出したい場合
例えば、23、33、43を抽出したい場合は以下。
print(ary1[2:5,2])
実行結果:
[23 33 43]
任意の2次元を抽出したい場合
例えば、10×10の真ん中あたりの2×3の数字を取ってきたいとする。
print(ary1[4:7,5:7])
実行結果:
[[46 47]
[56 57]
[66 67]]
思いのほか簡単に抽出作業ができる。