Pythonでドット積を計算する方法|整数や配列でのやり方を解説

スポンサーリンク

ハローラーナー! この記事では、任意の量、例えばベクトルや配列の内積を求めるためのPythonコードを見ていきます。

Pythonプログラミング言語は、これを行うためのいくつかの方法を提供し、それらのいくつかは、以下に説明されています。

こちらもご覧ください。

スポンサーリンク

ドット積とは?

まず、”ドットプロダクト “について理解しましょう。

数学において、ドットプロダクト(スカラー積と呼ばれることもある)とは、2つの同じ長さの数列から単一の値を返す代数演算の一つです。

この単一の値は、両方の数列の対応する要素の積の合計として計算されます。

これらの列は一次元ベクトル、多次元ベクトル、または単なる数値です。

このことを理解するために、例を挙げてみましょう。

例えば、2つのベクトルA,Bが以下のような2次元配列であったとします。

A = [ 1 2 ] [ 3 4 ]、B = [ 5 6 ] [ 7 8 ]。

とすると、A.Bは次のようになります。

[ [ 19 22] [ 43 50] ]

これは [ ((15)+(27)) ((16)+(28)) ] [ ((35)+(47)) ((36)+(48)) ]として計算されます。

ドット積を求める Python コード

Pythonでは、2つの配列の内積を効率的に求める方法として、numpyライブラリのnumpy.dot()メソッドがあります。

Numpy.dot()は、ベクトルや多次元配列などの2つの配列を引数として受け取り、その結果、つまり内積を表示するメソッドです。

このメソッドを使用するには、pythonのnumpyライブラリをインポートする必要があります。

いくつかの例を見てみましょう。

実施例1.スカラーの内積

この例では、2 つのスカラー値を受け取り、numpy.dot() を使ってその内積を表示します。

2 つのスカラーの内積は、単純に掛け合わせることで得られます。

例えば、2つのスカラー A = 7 と B = 6 は、A.B = 42 となります。

#importing numpy library
import numpy as np
 
#Taking two scalars
a = 3
b = 8
 
#calculating dot product using dot()
print("The dot product of given scalars = a.b =",np.dot(a,b))

上記のコードの出力は次のようになります。

The dot product of given scalars = a.b = 24

実施例2.配列の内積

ここでは、2つの配列を扱います。

これらの配列は、1次元、2次元、多次元のいずれでもかまいません。

そして、dot()を使って、それらの内積を計算します。

ここでは、2つの2次元配列の内積を計算します。

2次元配列の内積は、行列の乗算によって計算されます。

#importing numpy library
import numpy as np
 
#Taking two 2-D arrays
a = [ [1, 2], [3, 4]]
b = [ [7, 6], [5, 4]]
 
#calculating dot product using dot()
print("The dot product of given arrays :")
np.dot(a,b))

出力は次のとおりです。

The dot product of given arrays :
 
array( [ [17, 14],
            [41, 34] ] )

注意

つまり、a.bとb.aは等しくありません。

例題2では、点積をb.aではなくa.bとして計算していますが、これは全く異なる結果をもたらします。

結論

さて、Pythonで内積を計算するのは簡単ではないでしょうか?もちろん、関数が用意されているので、簡単です。

私からは以上です。

この記事を理解していただけたでしょうか?このような記事をもっと見るには、 https://www.askpython.com/ にチャンネルを合わせてください。

それでは、よいお年を

タイトルとURLをコピーしました