Python 配列の形状や大きさの変更

形状の変更


配列の形状を変更したい場合はnp.reshape関数か、配列のreshapeメソッドを使用する。これらが作成する配列はビューである。新しく作る配列の形状を引数に指定する。

スクリーンショット 2020-07-30 14.49.12

配列の次元を拡張したい場合はreshapeメソッドを使う以外にも方法がある。[:, np.newaxis]のように、次元を追加したい位置にnp.newaxisを記述してスライシングを行う。

スクリーンショット 2020-07-30 14.50.00

配列の結合


NumPyには配列を結合するための様々な関数が用意されている。それらの中ではvstack関数とhstack関数が便利である。配列を垂直方向に結合する場合はvstack関数を使用する。引数には結合させる配列を要素にしたシーケンスを指定する。一方のhstack関数は配列を水平方向に結合する。hstack関数で1次元配列同士を結合させると1次元配列が返される。

スクリーンショット 2020-07-30 14.51.28

vstack関数とhstack関数のほかには、これらの関数を一般化したようなstack関数やconcatenate関数がある。

スクリーンショット 2020-07-30 14.52.21

垂直方向と水平方向の結合を繰り返す場合にはblock関数を使う。この関数は数学のブロック行列のように複数の配列を結合する。block関数はvstack関数とhstack関数の代わりとしても使える。

スクリーンショット 2020-07-30 14.53.49

繰り返しパターンの配列


tile関数は指定の配列をブロックとし、それを指定回数繰り返し並べた配列を作成する。第1引数には元になる配列、第2引数には整数型かシーケンス型で各次元への繰り返し回数を指定する。

スクリーンショット 2020-07-30 14.54.45

配列の要素ごとに繰り返した配列を作成するにはrepeat関数を使う。tile関数と同様に第1引数には元になる配列、第2引数には繰り返し回数を指定する。デフォルトでは配列の要素を指定回数繰り返した1次元配列が作成される。axis引数を指定すれば、指定の軸方向に各要素を繰り返すことができる。

スクリーンショット 2020-07-30 14.55.27

軸の並べ替え


配列の軸を並べ替え、行と列が反転した配列などを作ることができる。配列の軸の順序を反転する操作のことを転置と呼ぶ。2次元配列を転置すると、単純に行と列が反転した配列になる。transpose関数を使うか、配列のT属性を参照することで転置された配列を取得できる。この転置された配列は下の配列のビューである。

スクリーンショット 2020-07-30 14.56.16

多次元配列の任意の軸を交換するにはswapaxesメソッドを使う。

スクリーンショット 2020-07-30 14.56.53

https://colab.research.google.com/drive/1kMeRWVuK63TBDNiTm5MjH-pyeYhTqEZm?usp=sharing


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