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

Pythonで2つの多次元ベクトルの内積を返す方法(numpy.vdotの使い方)

Pythonで2つの多次元ベクトルの内積を求めるには、numpy.vdot()メソッドを使用します。

vdot(a, b)関数は、dot(a, b)と比べて複素数の扱い方が異なります。第1引数が複素数の場合、内積の計算時にその複素共役が使われます。また、vdotは多次元配列もdotとは異なる方法で処理します。行列積を計算するのではなく、まず入力された引数を1次元ベクトルへ平坦化(フラット化)してから内積を求めます。そのため、この関数はベクトル専用として使用すべき点に注意しましょう。

戻り値はaとbの内積であり、aとbの型に応じてint型、float型、complex型のいずれかになります。第1パラメータはaで、aが複素数の場合は内積の計算前に複素共役が取られます。第2パラメータのbは、内積を計算するもう一方の配列です。

手順

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

import numpy as np

array()メソッドを使って、2つのNumPy多次元配列を作成します。

arr1 = np.array([[5, 10],[15, 20]])
arr2 = np.array([[3, 6],[9, 12]])

作成した配列を表示します。

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)

2つの多次元ベクトルの内積を返すには、Pythonのnumpy.vdot()メソッドを使用します。

print("\nResult...\n",np.vdot(arr1, arr2))

サンプルコード

import numpy as np

# array()メソッドを使って2つのNumPy多次元配列を作成
arr1 = np.array([[5, 10],[15, 20]])
arr2 = np.array([[3, 6],[9, 12]])

# 配列を表示
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.vdot()メソッドで2つの多次元ベクトルの内積を計算
print("\nResult...\n",np.vdot(arr1, arr2))

出力結果

Array1...
[[ 5 10]
[15 20]]

Array2...
[[ 3 6]
[ 9 12]]

Dimensions of Array1...
2

Dimensions of Array2...
2

Shape of Array1...
(2, 2)

Shape of Array2...
(2, 2)

Result...
450

  1. Python NumPyで2つのベクトルの外積を計算する方法

    2つのベクトルの外積(クロス積)を計算するには、PythonのNumPyライブラリが提供する numpy.cross() メソッドを使用します。このメソッドは、指定された2つのベクトルの外積 c を返します。numpy.cross() メソッドの主な引数a:第1引数。最初のベクトルの成分です。b:第2引数。2番目のベクトルの成分です。axisa:第3引数。ベクトルを定義する a の軸を指定します。デフォルトは最後の軸です。axisb:第4引数。ベクトルを定義する b の軸を指定します。デフォルトは最後の軸です。axisc:第5引数。外積ベクトルを格納する c の軸を指定します。入力ベクトルがど

  2. Pythonで2つのスパースベクトルの内積を計算するプログラム

    問題の概要ここでは、2つのリストで表現されたスパースベクトル(疎なベクトル)が与えられ、その内積(ドット積)を求めることを考えます。ベクトルはオブジェクトとして表現され、各要素のリストはオブジェクトのメンバー変数 nums に格納されています。例えば、入力が以下のような場合を考えてみましょう。vector1 = [1, 0, 0, 0, 1]vector2 = [0, 0, 0, 1, 1]このときの出力は 1 になります。内積の計算は次のとおりです。1 × 0 + 0 × 0 + 0 × 0 + 0 × 1 + 1 × 1 = 1解決のための手順この問題を解くには、以下の手順に従います。結果