Pythonで配列とスカラーの内積を計算する方法|numpy.inner()の使い方
Pythonで配列とスカラーの内積を求めるには、NumPyのnumpy.inner()メソッドを使用します。この関数は、1次元配列に対しては通常のベクトル内積を計算し、多次元配列の場合は最後の軸に沿った要素ごとの積の総和を返します。
引数には2つの配列(またはベクトル)aとbを指定します。なお、aとbがスカラーでない場合は、両者の最後の次元が一致している必要があります。
実行手順
まず、必要なライブラリをインポートします。
import numpy as np
numpy.eye()メソッドを使って配列を作成します。このメソッドは、対角成分が1、それ以外が0の2次元配列(単位行列)を返します。
arr = np.eye(5)
掛け合わせるスカラー値を定義します。
val = 2
作成した配列のデータ型を確認します。
print("\n配列のデータ型...\n", arr.dtype)配列の次元数を確認します。
print("\n配列の次元数...\n", arr.ndim)配列の形状を確認します。
print("\n配列の形状...\n", arr.shape)外積を求める場合
参考までに、配列とスカラーの外積を求めるには、numpy.outer()メソッドを使用します。
print("\n結果(外積)...\n", np.outer(arr, val))内積を求める場合
配列とスカラーの内積を求めるには、numpy.inner()メソッドを使用します。
print("\n結果(内積)...\n", np.inner(arr, val))完全なコード例
import numpy as np
# numpy.eye()で配列を作成(対角成分が1、それ以外が0の2次元配列)
arr = np.eye(5)
# スカラー値
val = 2
# 配列を表示
print("配列...\n", arr)
# データ型を確認
print("\n配列のデータ型...\n", arr.dtype)
# 次元数を確認
print("\n配列の次元数...\n", arr.ndim)
# 形状を確認
print("\n配列の形状...\n", arr.shape)
# numpy.inner()で配列とスカラーの内積を計算
print("\n結果(内積)...\n", np.inner(arr, val))実行結果
配列... [[1. 0. 0. 0. 0.] [0. 1. 0. 0. 0.] [0. 0. 1. 0. 0.] [0. 0. 0. 1. 0.] [0. 0. 0. 0. 1.]] 配列のデータ型... float64 配列の次元数... 2 配列の形状... (5, 5) 結果(内積)... [[2. 0. 0. 0. 0.] [0. 2. 0. 0. 0.] [0. 0. 2. 0. 0.] [0. 0. 0. 2. 0.] [0. 0. 0. 0. 2.]]
実行結果からわかるように、単位行列とスカラー値「2」の内積を計算すると、対角成分がすべて「2」になった配列が得られます。これは、numpy.inner()がスカラーとの演算において各要素にそのスカラーを乗算した結果を返すためです。
-
【Python】numpy.inner()で2つの多次元配列の内積を計算する方法
2つの多次元配列の内積(インナー積)を求めるには、Pythonのnumpy.inner()メソッドを使用します。このメソッドは、1次元配列に対しては通常のベクトルの内積を計算し、高次元配列に対しては最後の軸に沿った要素ごとの積の総和を返します。 引数として渡すのは a と b の2つの配列です。なお、aとbがスカラーでない場合は、両者の最後の軸のサイズが一致している必要があります。 内積を計算する手順 まず、必要なライブラリをインポートします。 import numpy as np array()メソッドを使って、2つのNumPyの2次元配列を作成します。 arr1 = np.array([[
-
Python(NumPy)で4次元配列と3次元配列のクロネッカー積を計算する方法
クロネッカー積(Kronecker Product)とは PythonのNumPyでは、numpy.kron()メソッドを使うことで、4次元配列と3次元配列のように次元数が異なる配列同士でもクロネッカー積を簡単に求めることができます。クロネッカー積とは、第1の配列の各要素によって第2の配列全体をスケーリングしたブロックから構成される複合配列のことです。 kron()関数は、引数aとbの次元数が同じであることを前提としており、次元数が異なる場合は、小さい方の配列の先頭にサイズ1の軸が自動的に追加されます。a.shape = (r0, r1, …, rN)、b.shape = (s0, s1, …