Ndarray は配列要素ごとで数値演算を行う

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

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


 Numpy は線形代数に対応する配列としてNdarry を提供して、基本的な四則演算子から関数演算まで幅広い対応性を持っています。 線形代数での配列は、スカラー、ベクトル、行列、テンソルがありますが、その対応性を以下のように捉えることが出来ます。

 スカラー: 大きさだけを持つ量で1実数です。 Pythonではリテラルまたは1変数が対応しています。

 ベクトル: 複数のスカラーを一列に組み合わせた配列です。 物理的にベクトルは、大きさと方向を持つのでスカラー2つで平面空間、3つなら立体空間を現すのに使われます。複数の要素のpythonの1次元配列が対応します。 ベクトルで物理量を現す時には、2次元(平面)、3次元(空間)、4次元(時空)などで要素数を表現するので、Ndarray での次元の数え方と異なる。 

 行列 : 縦横にスカラーを並べたものとなります Ndarrayの2次元配列が対応します。

 テンソル : スカラーやベクトル、行列などの総称で、3次元以上の階層を持つ配列も含むのです。

 Ndarray の基本的な演算処理は同じ形状の配列間での演算となります。タプルやリストとの演算を行うことも可能ですが、Ndarray に変換して行われるので演算結果はNdarray となります。 また、単一の数値や、配列形状が異なる配列との演算でも、一定の条件の下では ブロードキャスト(broadcast) が行われ、配列の形状の調整を行って演算を完了させることが出来ます。

*  配列形状が同じNdarray による基本的な演算 

 Ndarray の基本的な算術演算は同じ形状の配列形状間で行われ、同じ要素位置の要素での演算結果が元の位置に収められます。演算の前後で配列形状は変化しません。 Python の標準配列のタプル、リストの演算とは異なる点です。 

【表1参照】 

Ndarray の和演算は行列の和算に対応。

  演算子*によるNdarray 間の演算は同じように要素毎に掛け算が行われた結果を得る。 この行列計算は アダマール積(Hadamard Product)である。 線形代数では行列同士の積として他にも内積、外積などの演算が定義されているが、Numpy の積はアダマール積。

 Numpy の積算(アダマール積)

 Ndarray での基本的な演算(四則演算など)は、配列の要素毎で計算を行うので、配列の形状が一致している必要がある。 配列を変数に格納すると配列の形状を直接見ることが出来ないので間違わないように確認と注意が必要です。

* 1つの数(スカラー)とNdarray(ベクトル、行列)演算

1つの数値とNdarrayの演算の場合、Ndarray の全ての要素に対して同じ数値での演算が行われます【表2参照】。 線形代数のベクトルまたは行列ではスカラーとの積算のみが定義されています。

 この演算では、ブロードキャスト(broadcast)により配列の形状を一致をさせて演算を完了させています。

            * 式(5)-(8)のbは1つの数値または要素が1つの配列の要素値



〇 関連する公開記事

 ・ Ndarray のブロードキャスト計算
 ・ タプル、リスト、Ndarrayの1次元配列での四則演算
 ・ Ndarray(多次元)要素の取得と変更
 ・ Ndarray のcopy複製、append追加、concatenate結合
 ・ Ndarray(多次元配列)の生成


以上

IG.Python Note

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

0コメント

  • 1000 / 1000