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

Pythonのアインシュタインの縮約記法による行列ベクトルの乗算


アインシュタインの縮約記法を使用した行列ベクトルの乗算には、Pythonのnumpy.einsum()メソッドを使用します。最初のパラメーターは添え字です。これは、添え字ラベルの合計ascomma区切りリストの添え字を指定します。 2番目のパラメーターはオペランドです。これらは操作用の配列です。

einsum()メソッドは、オペランドのアインシュタインの縮約記法を評価します。アインシュタインの縮約記法を使用すると、多くの一般的な多次元線形代数配列演算を簡単な方法で表すことができます。暗黙モードでは、einsumはこれらの値を計算します。

明示的モードでは、einsumは、指定された添え字ラベルに対して合計を無効にするか、強制することにより、従来のEinstein合計操作とは見なされない可能性のある他の配列操作を計算するためのさらなる柔軟性を提供します。

ステップ

まず、必要なライブラリをインポートします-

import numpy as np

array()メソッドを使用して2つのnumpy1次元配列を作成する-

arr1 = np.arange(25).reshape(5,5)
arr2 = np.arange(5)

配列を表示する-

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)

アインシュタインの縮約記法を使用した行列ベクトルの乗算には、Pythonのnumpy.einsum()メソッドを使用します-

print("\nResult (Matrix Vector multiplication)...\n",np.einsum('ij,j', arr1, arr2))

import numpy as np

# Creating two numpy One-Dimensional array using the array() method
arr1 = np.arange(25).reshape(5,5)
arr2 = np.arange(5)

# Display the arrays
print("Array1...\n",arr1)
print("\nArray2...\n",arr2)

# Check the Dimensions of both the arrays
print("\nDimensions of Array1...\n",arr1.ndim)
print("\nDimensions of Array2...\n",arr2.ndim)

# Check the Shape of both the arrays
print("\nShape of Array1...\n",arr1.shape)
print("\nShape of Array2...\n",arr2.shape)

# For Matrix Vector multiplication with Einstein summation convention, use the numpy.einsum() method in Python.
print("\nResult (Matrix Vector multiplication)...\n",np.einsum('ij,j', arr1, arr2))

出力

Array1...
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]

Array2...
[0 1 2 3 4]

Dimensions of Array1...
2

Dimensions of Array2...
1

Shape of Array1...
(5, 5)

Shape of Array2...
(5,)

Result (Matrix Vector multiplication)...
[ 30 80 130 180 230]

  1. Pythonでの行列操作

    Pythonでは、さまざまな行列の操作と操作を解決できます。 Numpy Moduleは、行列演算にさまざまな方法を提供します。 add() −2つの行列の要素を追加します。 減算() −2つの行列の要素を減算します。 divide() −2つの行列の要素を分割します。 multiply() −2つの行列の要素を乗算します。 dot() −行列の乗算を実行し、要素ごとの乗算は実行しません。 sqrt() −行列の各要素の平方根。 sum(x、axis) −マトリックス内のすべての要素に追加します。 2番目の引数はオプションです。これは、軸が0の場合は列の合計を計算し、

  2. 2つの行列のPythonプログラム乗算。

    与えられた2つのユーザー入力マトリックス。私たちのタスクは、2つの行列の加算を表示することです。これらの問題では、ネストされたリストを包括的に使用します。 アルゴリズム Step1: input two matrix. Step 2: nested for loops to iterate through each row and each column. Step 3: take one resultant matrix which is initially contains all 0. Then we multiply each row elements of first matrix