Python で内積を計算する

Vaibhhav Khetarpal 2023年1月30日
  1. Python で*記号を使用して 2つのスカラーの内積を計算する
  2. Python で numpy.dot() 関数を使用して 2つの配列またはベクトルの内積を計算する
  3. Python で sum() 関数を使用して 2つの配列またはベクトルの内積を計算する
  4. Python で map() 関数を mul() 関数と一緒に使用して 2つの配列またはベクトルの内積を計算する
  5. Python で more_itertools ライブラリを使用して 2つの配列またはベクトルの内積を計算する
Python で内積を計算する

このチュートリアルでは、Python で 2つの配列またはベクトルの内積を計算するさまざまな方法を紹介します。

これを実装するためのさまざまなメソッドに進む前に、まず Python のドット積について学習します。

ご存知かもしれませんが、ドット積は、スカラー積と呼ばれることもあり、指定された 2つの配列間で実行される代数演算です。それらはスカラーまたはベクトルである可能性があります。出力は常に単一の数値です。

Python では、両方の配列の長さシーケンスが類似している場合、2つの配列の内積を計算できます。

Python で*記号を使用して 2つのスカラーの内積を計算する

スカラーは 0 次元配列とも呼ばれ、単純に標準の数値のように扱われます。それらの間の内積は、両方のスカラーの積と同じになります。

以下の方法はスカラーでも機能しますが、これは余分な作業を行うことなくプロセスを実行するための比較的簡単な方法です。

次のコードは、*記号を使用して、Python で 2つのスカラーの内積を計算します。

dotp = 2 * 5
print(dotp)

上記のコードは、次の出力を提供します。

10

Python で numpy.dot() 関数を使用して 2つの配列またはベクトルの内積を計算する

NumPy という用語は、NumericalPython の頭字語です。このライブラリは、Python で配列の使用を可能にします。また、これらの配列の操作に役立つ関数も提供します。

numpy.dot() 関数は、2つの配列間の内積を見つける目的を実行するために特別に設計された関数です。NumPy モジュールを Python コードにインポートして、エラーなしでスムーズに実行する必要があります。

Python コードでこの実装を説明するために、2つのリストを取得し、内積を返します。

次のコードは、numpy.dot() 関数を使用して、Python で 2つの配列またはベクトルの内積を計算します。

import numpy as np

x = [5, 10]
y = [4, -7]
dotp = np.dot(x, y)
print(dotp)

上記のコードは、次の出力を提供します。

-50

上記のコードは、2 次元配列でも機能します。実生活で自分でドット積をすばやく見つけることで、答えを簡単に確認できます。この関数を正しく使用すると、正確な結果が得られます。

同じ関数を次の方法でスカラーに使用できます。

import numpy as np

dotp = np.dot(2, 5)
print(dotp)

上記のコードは、次の出力を提供します。

10

Python 3.5 では、NumPy を使用して作成された n 次元配列の内積を計算するための@演算子が導入されました。このメソッドは、Python の新しいバージョンで広く利用されています。一般的なリストでは機能しないことに注意してください。

Python で sum() 関数を使用して 2つの配列またはベクトルの内積を計算する

より古い Python の方法は、sum() 関数を利用し、いくつかの一般的な調整を行って、Python の 2つの配列間の内積を計算することです。

zip() 関数は Python で提供される組み込み関数であり、ここでは sum() 関数と一緒に使用して、指定された配列を結合します。

ここでは、リスト内包表記を使用してコードをよりコンパクトにします。

次のコードは、sum() 関数を使用して、Python で 2つの配列またはベクトルの内積を計算します。

x = [5, 10]
y = [4, -7]
print(sum([i * j for (i, j) in zip(x, y)]))

上記のコードは、次の出力を提供します。

-50

Python で map() 関数を mul() 関数と一緒に使用して 2つの配列またはベクトルの内積を計算する

map() 関数は、選択された反復可能オブジェクトのすべてのアイテムに任意の関数を適用した後、マップオブジェクトを返すために使用されます。

mul() 関数は、その名前が示すように、任意の 2つの数値の乗算のタスクを実行するための組み込み関数です。mul() 関数は、operator ライブラリからインポートすることで見つけて使用できます。

次のコードは、map() 関数と mul() 関数を使用して、Python で 2つの配列またはベクトルの内積を計算します。

from operator import mul

x = [5, 10]
y = [4, -7]
print(sum(map(mul, x, y)))

上記のコードは、次の出力を提供します。

-50

Python で more_itertools ライブラリを使用して 2つの配列またはベクトルの内積を計算する

more_iteratertools は、Github プラットフォーム上で大きな存在感を示すサードパーティのライブラリです。すでに存在する一般的な dotproduct``itertools レシピを実装するだけです。

次のコードは、more_itertools ライブラリを使用して、Python で 2つの配列またはベクトルの内積を計算します。

import more_itertools as mit

a = [5, 10]
b = [4, -7]
print(mit.dotproduct(a, b))

上記のコードは、次の出力を提供します。

-50
Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

関連記事 - Python Array

関連記事 - Python Math