配列の構成を変更する
NumPyでは、作った配列の構成を変更することができます。
例えば、一次元配列 [0, 1, 2, 3] を二次元配列 [[0,1], [2,3]] にするというようなことが簡単にできます。
reshape
reshape()を使って、配列の構成を変更します。
オブジェクト.reshape(変換元配列, 配列形状, [order='C' or 'F' or 'A'])
引数 | 内容 |
変換元配列 | 元の配列を指定 |
配列形状 | 配列の形状([x,y]や[x,y,z])を指定。新しい配列は、元の配列と互換性がある必要があります。 また、整数1つの場合は、一次元配列を表します |
order | 変換順序の指定。省略可 指定した順序で要素を読み込み、配列を再構成します 'C':C言語のような順序。デフォルト 'F':Fortranのような順序 'A':元の順序が'F'なら'F'の順序で、それ以外なら'C’の順序で配列を構成します |
以下は、reshape()を使った実行例です。
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 |
>>> import numpy as np 一次元配列を作成 >>> a = np.arange(8) >>> a array([0, 1, 2, 3, 4, 5, 6, 7]) 一次元配列aを[2,4]の二次元配列に変換 >>> np.reshape(a, [2,4]) array([[0, 1, 2, 3], [4, 5, 6, 7]]) 一次元配列aを[4,2]の二次元配列に変換 >>> np.reshape(a, [4,2]) array([[0, 1], [2, 3], [4, 5], [6, 7]]) 一次元配列aを[2,2,2]の三次元配列に変換 >>> np.reshape(a, [2,2,2]) array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) 一次元配列aをorderを'C'にして二次元配列に変換 >>> np.reshape(a, [2,4], order='C') array([[0, 1, 2, 3], [4, 5, 6, 7]]) 一次元配列aをorderを'F'にして二次元配列に変換 >>> np.reshape(a, [2,4], order='F') array([[0, 2, 4, 6], [1, 3, 5, 7]]) 一次元配列aをorderを'A'にして二次元配列に変換 >>> np.reshape(a, [2,4], order='A') array([[0, 1, 2, 3], [4, 5, 6, 7]]) |
また、一次元配列を作ると同時に、多次元配列にすることもできます。
その場合、配列を表す [ ] は不要です。
1 2 3 |
>>> np.arange(8).reshape(2, 4) array([[0, 1, 2, 3], [4, 5, 6, 7]]) |