ndarray – 2次元配列の1次元化

概要

ndarrayの2次元配列を1次元化して扱いたいとき(たとえば2次元のAxes配列を一括で扱いたいとき)の方法に、reshape()メソッド/関数、flatten()メソッド、ravel()メソッド/関数を使う方法がある。

以下、次の配列を使う。

ndarrayのメソッド

ndarrayのメソッドのreshape()flatten()ravel()を使う。戻り値もndarray。

reshape()メソッド

reshape()メソッドで1次元化する場合、reshape(-1)とする。

1次元の列ベクトルが必要な場合はreshape(-1, 1)

reshape(1, -1)とすると1行になるが、次元が2次元であるため、1つの1次元要素配列を要素に持つ2次元配列となってしまう。

flatten()メソッド

flatten()メソッドは、reshape(-1)と同じ効果を持つ。

ravel()メソッド

ravel()メソッドも、reshape(-1)と同じ効果を持つ。

Numpyの関数

Numpy.reshape()関数、Numpy.ravel()関数は、引数にndarray以外のarray-likeオブジェクトをとることができる。ただし戻り値はndarray。

Numpy.flatten()は定義されていない。

numpy.reshape()関数

numpy.reshape()関数は、第2引数で次元・次数を与える。

2次元にしたい場合は、第2引数をタプルにする。

numpy.ravel()関数

numpy.ravel()関数の機能はravel()メソッドと同じ。

戻り値のビューとコピーの違い

reshape()ravel()は可能な限りビューを返す(結果の変更がオリジナルに影響を与える)。

flatten()はコピーを返す(結果の変更はオリジナルに影響しない)。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です