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]]

思いのほか簡単に抽出作業ができる。





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