Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】numpy.inner()で1次元・2次元配列の内積を計算する方法

Pythonで2つの配列の内積(Inner Product)を求めるには、NumPyライブラリのnumpy.inner()メソッドを使用します。1次元配列に対しては通常のベクトルの内積が計算され、高次元配列の場合は最後の軸に沿った積和が計算されます。

引数にはaとbの2つの配列を指定します。なお、aとbがスカラーでない場合は、両者の最後の次元(軸のサイズ)が一致している必要があります。

手順

1. 必要なライブラリをインポートする

まず、NumPyをインポートします。

import numpy as np

2. 配列を作成する

arange()メソッドとreshape()メソッドを組み合わせて、2つの多次元配列を作成します。

arr1 = np.arange(2).reshape((1,1,2))
arr2 = np.arange(6).reshape((3,2))

3. 配列を表示する

print()関数を使って、作成した2つの配列の内容を確認します。

print("Array1...\n",arr1)
print("\nArray2...\n",arr2)

4. 配列の次元数を確認する

ndim属性を使用して、各配列の次元数をチェックします。

print("\nDimensions of Array1...\n",arr1.ndim)
print("\nDimensions of Array2...\n",arr2.ndim)

5. 配列の形状を確認する

shape属性を使用して、各配列の形状をチェックします。

print("\nShape of Array1...\n",arr1.shape)
print("\nShape of Array2...\n",arr2.shape)

6. 内積を計算する

numpy.inner()メソッドを使って、2つの配列の内積を求めます。

print("\nResult (Inner Product)...\n",np.inner(arr1, arr2))

サンプルコード全体

import numpy as np

# arange()とreshape()を使って2つの配列を作成
arr1 = np.arange(2).reshape((1,1,2))
arr2 = np.arange(6).reshape((3,2))

# 配列を表示
print("Array1...\n",arr1)
print("\nArray2...\n",arr2)

# 次元数を確認
print("\nDimensions of Array1...\n",arr1.ndim)
print("\nDimensions of Array2...\n",arr2.ndim)

# 形状を確認
print("\nShape of Array1...\n",arr1.shape)
print("\nShape of Array2...\n",arr2.shape)

# numpy.inner()メソッドで内積を計算
# 1次元配列では通常のベクトルの内積、
# 高次元配列では最後の軸に沿った積和が計算される
print("\nResult (Inner Product)...\n",np.inner(arr1, arr2))

実行結果

Array1...
[[[0 1]]]

Array2...
[[0 1]
[2 3]
[4 5]]

Dimensions of Array1...
3

Dimensions of Array2...
2

Shape of Array1...
(1, 1, 2)

Shape of Array2...
(3, 2)

Result (Inner Product)...
[[[1 3 5]]]

解説

この例では、形状(1, 1, 2)の3次元配列arr1と、形状(3, 2)の2次元配列arr2の内積を計算しています。どちらの配列も最後の軸のサイズが2で一致しているため、計算が可能です。

結果として得られた[[[1 3 5]]]は、arr1の要素[0, 1]とarr2の各行[0, 1]、[2, 3]、[4, 5]とのそれぞれの内積(0×0+1×1=1、0×2+1×3=3、0×4+1×5=5)を表しています。

  1. 【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([[

  2. 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, …