※記事内に商品プロモーションを含むことがあります。
はじめに
NumPy配列のコピーや次元の結合、結合・分割、ソートについて。
環境
ソフトウェア | バージョン |
---|---|
NumPy | 1.19 |
配列のコピー
=でコピーすると、コピー元とコピー先で同じオブジェクトを参照するため、
どちらかを操作するともう片方も変更される (Shallow copy)。
一方、copyメソッドでコピーすると、コピー先で新たにオブジェクトを作成するため、
どちらかを操作しても、もう片方には反映されない (Deep copy)。
|
|
サイズ・次元の変更
reshapeを使うと、指定したサイズに変形された配列が返される。 ただし、元の配列のサイズは変更されない。 行数または列数の片方のみを指定するときは、 指定しない次元の要素数を-1とすると、自動で変形してくれる。
また、flattenを使うと、2次元配列を1次元配列に変換できる。 こちらも元の配列のサイズは変更されない。
|
|
|
|
結合
2つのNumPy配列を1つのNumPy配列に結合する。
関数 | 記法 | 説明 |
---|---|---|
vstack | np.vstack([a,b]) | 縦(0軸)方向に結合 |
hstack | np.hstack([a,b]) | 横(1軸)方向に結合 |
dstack | np.dstack([a,b]) | 深さ(2軸)方向に結合 |
concatenate | np.concatenate([a,b], axis=0) | 指定した軸方向に結合 |
|
|
分割
NumPy配列を分割する。分割された配列はリスト形式で返される。
関数 | 記法 | 説明 |
---|---|---|
vsplit | np.vsplit(a,n) | 縦(0軸)方向に結合・分割 |
hsplit | np.hsplit(a,n) | 横(1軸)方向に結合・分割 |
dsplit | np.dsplit(a,n) | 深さ(2軸)方向に結合・分割 |
split | np.split(a, axis=0) | 指定した軸方向に結合・分割 |
nは、整数またはリストである。 nが整数の場合、配列はn個に均等分割される。 そのため、nは分割したい軸方向の配列の要素数の約数でなければならない。
|
|
また、nをリストにすることで、分割する位置を指定できる。 リストは昇順にソートされた整数からなる。
|
|
ソート
配列をソートするには、sort関数を使う。 ただし、昇順のソートしかできないため、降順にソートした結果が欲しい場合はスライスなどを使う必要がある。
1次元配列の場合。
|
|
2次元配列の場合。 必要に応じてソートする次元を指定する。
|
|
参考リンク
Array manipulation routines — NumPy v1.19 Manual
Quickstart tutorial — NumPy v1.19 Manual