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

Pythonで1次元ベクトルの内積を計算する方法(numpy.vdot()の使い方)

Pythonで1次元ベクトルの内積(ドット積)を返すには、NumPyライブラリが提供する numpy.vdot() メソッドを使用します。

vdot(a, b) 関数は、dot(a, b) とは複素数の扱い方が異なります。第1引数が複素数の場合、内積の計算にはその複素共役が使用されます。また、vdot は多次元配列に対しても dot とは異なる動作をします。行列積を計算するのではなく、まず入力引数を1次元ベクトルに平坦化(flatten)してから内積を求めます。そのため、vdot はベクトル専用の関数として使用すべきです。

このメソッドは、aとbの内積を返します。戻り値は、aとbの型に応じて int、float、complex のいずれかになります。第1パラメータは a で、a が複素数の場合は内積の計算前に複素共役が取られます。b は内積を計算する2番目のパラメータです。

手順

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

import numpy as np

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

arr1 = np.array([2+3j,5+6j])
arr2 = np.array([9+10j,11+12j])

配列を表示します。

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

両方の配列の次元数を確認します。

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

両方の配列の形状(shape)を確認します。

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

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

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

サンプルコード

import numpy as np

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

# 配列を表示
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)

# 1次元ベクトルの内積を返すには、numpy.vdot() メソッドを使用
print("\nResult...\n",np.vdot(arr1, arr2))

実行結果

Array1...
[2.+3.j 5.+6.j]

Array2...
[ 9.+10.j 11.+12.j]

Dimensions of Array1...
1

Dimensions of Array2...
1

Shape of Array1...
(2,)

Shape of Array2...
(2,)

Result...
(175-13j)

  1. 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解決のための手順この問題を解くには、以下の手順に従います。結果

  2. Pythonで文字「G」のパターンを出力するプログラム

    コンソールにアスタリスク(*)を使って文字「G」のパターンを表示したい場合、専用の関数を定義し、二重ループ(ネストされたループ)で行と列を走査しながら、条件に合致する位置だけ「*」を出力する方法が有効です。以下に実際の実装例を示します。サンプルコードdef display_pattern(my_line): my_pattern = for i in range(my_line): for j in range(my_line): if ((j == 1 and i != 0 and i != my_line - 1)