[NumPy] 18.行列の1次元への変換(フラット化)

NumPy

はじめに

NumPyでは、多次元配列(行列)を1次元配列に変換する操作が必要になることがあります。この変換は「フラット化」と呼ばれ、NumPyには主にflatten()メソッドとravel()関数の2つの方法が用意されています。この記事では、これらの方法の使い方と違いについて説明します。

解説

行列の生成

flatten()による1次元化

元の行列を1次元に変換した行列が得られます。

ravel()による1次元化

flatten()と同様に、元の行列を1次元に変換した行列が得られます。

reshape(1,-1)による1次元化

(1,-1)で1次元の行列となります。

flatten()とravel()の違い

flatten()とravel()の主な違いは、元の配列に変更を加えた際の動作にあります。ravel()は変更が元の配列に反映されるため、意図せず値が変わってしまうことがあります。こうした予期せぬエラーを防ぐためには、flatten()を利用するほうが安全でしょう。

まとめ

NumPyで行列を1次元配列に変換する方法として、flatten()メソッドとravel()関数があります。flatten()はコピーを作成するため元の配列に影響を与えませんが、ravel()はビューを返すため変更が元の配列に反映されることがあります。メモリ効率を重視する場合はravel()が、データの独立性を確保したい場合はflatten()が適しています。用途に応じて適切な方法を選択しましょう。

参考

flattenよりも高速に配列を一次元化するnumpy.ravel関数の使い方
NumPyには配列を1次元ベクトル(配列)に変換する関数がravelとflattenの主に2つ存在します。本記事では、そのうちの1つであるravel関数について解説しました。

コメント