Ndarray(多次元配列)の生成

 この記事は個人の実行記録Noteです。個人的な経験からPythonの基本を初心の方向けに紹介します。

§ プログラミング >変数と演算 >Ndarray(多次元)



 多次元のNdarrayを作るには、 多次元に対応したリストかタプルをNdarrayに変換するか、1次元のNdarrayを作って多次元に変換、又は特定の初期値と配列の次元を設定して生成するが基本となる。 どの様な手順で最初に設定したい配列によって選択する。
 また、特定目的の配列の生成方法として、タイル詰め、単位行列などが用意されている。

 *正確で詳細な情報は Numpy ユーザガイドかレファレンスを参照してください。
NumPy user guide > NumPy fundamentals > Array creation
NumPy reference > Routines and objects by topic > Array creation routines

 

* 多次元Ndarrayの生成方法 

【表1参照】 新しく配列を生成する方法です。(既にある並列をアレンジする場合は派生方法を参照)

・リスト(タプル)から変更 > np.array(多元表記コンテナ)  : 入れ子状態のリスト(タプル)を作って変換することが出来る。多次元配列としての要素数と入れ子の組み合わせが多次元配列の状態で無いとエラーになる。
・1次リスト(タプル)の変換 > np.array(1次元リスト).reshape( 配列次元 ) : 1次元のリスト(タプル)からNdarry配列を作って、reshapeメソッドで多次元に変換する。 元にする配列の要素数が多次元化した時の全要素数と一致する必要がある。 reshapeメソッドの配列次元はタプルで()を省略可能。
・arange 関数の変換 > np.arange( 要素数 ).reshape( 配列次元 ) : 1次元のNdarryをarangeメソッドで生成して、reshapeメソッドで多次元に変換する。arange メソッドでの要素数が多次元化した時の全要素数( 配列次元の積 )と一致する必要がある。 reshapeメソッドの配列次元はタプルで()を省略可能。
・0の多元配列 > np.zeros( [ 配列次元 ] ) : 全要素の初期値が0の多次元Ndarry作り出す。 データタイプを指定しなければ、浮動小数点型の0となる。 配列次元はリストまたはタプルにする。
・1の多元配列 > np.ones( [ 配列次元 ] ) : 全要素の初期値が1の多次元Ndarry作り出す。 データタイプを指定しなければ、浮動小数点型の1となる。 配列次元はリストまたはタプルにする。
・空の多元配列 > np.empty( [ 配列次元 ] ) : 全要素の初期値を指定なしの多次元Ndarry作り出す。浮動小数点型の値を持つが、あたしは不定の何かが入っている。 配列次元はリストまたはタプルにする。
・指定の多元配列 > np.full( [ 配列次元 ] ,値) : 全要素の初期値が指定した値の多次元Ndarry作り出す。 配列次元はリストまたはタプルにする。

* その他の多次元Ndarrayのその他生成メソッド

【表2参照】 Numpu には多くの配列を生成するメソッドがあります。使用してみたメソッドをいくつか紹介します。 

・繰返しタイル張り >np.tile(配列, 配列形状)  : 引数1の配列を、引数2の形状に繰返した配列を生成します。
・2次元単位行列 > np.eye(配列形状) : 引数1の2次元正方行列の単位行列を生成します。オプション設定で、正方行列でない場合の配列も生成が可能。


〇 関連する公開記事

 ・ Ndarray(1次元)の生成と要素の追加、削除、コピー
 ・ Ndarray(1次元)要素の取得と変更
 ・ リストの作成、要素の追加・削除、アクセスと変更
 ・ タプル設定。タプルは変更不可の一括管理コンテナ



〆後書き

 Ndarray で生成できる配列は多種ある。科学計算には多様な配列計算があるので、対応することによって配列生成メソッドも多様になっている。 個人的には使う配列は限定的なので、なんでこんな配列があるのか? こんなオプションが必要なのか? と首を傾げるものもある。 自分に必要と思えて、使ったことのあるものだけを覚えておくことになる。


IG.Python Note

PythonプログラミングのためのTips集です。 趣味のPythonプログラミングをしていると、必要なプログラミング情報を自分で取集することが必要になります。 集めた情報を整理しておくと便利なので、個人的な学習メモとして記録を作りました。

0コメント

  • 1000 / 1000