pythonで内積を計算する方法2選|自作関数とnumpyライブラリ

pythobで内積を計算する方法2選

計算した内積が合っているかどうか確認したい時、pythonであれば簡単に正解を確認することができます。

この記事を読むことで、pythonを使った内積の計算できるようになります。

目次

pythonで内積を計算する方法2選

pythonで内積を計算する方法2選

今回はpythonで内積を計算する方法を2つ紹介します。

それぞれの方法をコードを確認しながら見ていきましょう。

今回記載しているコードはグーグルコラボラトリーで動作を確認しています。

for文で内積を計算

for文で内積を計算

関数を自作して内積を求めてみましょう。

STEP
内積の公式を確認

ベクトルの内積は各要素の積の総和で求められます。

内積の公式
STEP
公式をコーディングする

内積の公式をコーディングします。

def dot(n, m):
  m_dot = 0

  for a, b in zip(list1, list2):
    m_dot += a * b

  return m_dot

作成した関数を簡単に説明します。

関数をdefで定義します。

zip関数をfor文でループさせることで、リスト内の要素を同時にループ可能です。

始めに空の変数m_dotを用意し、 各要素の積をm_dotに加算させていきます。

加算が全て終了したら、m_dotを返して終了です。

STEP
動作の確認

最後に自作した関数がきちんと動作するか確認します。

list1 = [3, -6, 9]
list2 = [-5, -2, 7]
dot(list1, list2)

出力:

60

numpyで内積を計算

numpyで内積を計算

numpyは行列の扱いに長けたライブラリです。

使用する場合はあらかじめnumpyをインストールしておく必要があります。

始めにnumpyをインポートしましょう。numpyはnpと省略するのが一般的です。

import numpy as np

numpy.inner()

numpy.inner()は1次元配列のベクトルの通常の内積を計算できます。

list1とlist2を配列として用意し、試してみましょう。

array_1 = np.array([3, -6, 9])
array_2 = np.array([-5, -2, 7])
np.inner(array_1, array_2)

出力:

60

numpy.dot()

numpy.dot()関数は2つの1次元配列の内積を計算することができます。

ちなみに配列が両方とも2次元配列の場合は行列の乗算になります。

array_1 = np.array([3, -6, 9])
array_2 = np.array([-5, -2, 7])

np.dot(array_1, array_2)

出力:

60

演算子@

numpy.dot()関数と同様の操作を演算子@でも可能です。

配列(array)のみ計算可能で、リストでは計算できない点に注意してください。

array_1 @ array_2

出力:

60

記号を含む行列の内積:sympy

sympyをインポートすることで記号を含む行列を扱うことができます。

sympyも外部ライブラリのため、開発環境にインストールが必要です。

sympy.var()で記号を登録します。sympy.Matrix()で行列を生成します。

import sympy
sympy.var('a_x:y,b_x:y')
array_a = sympy.Matrix([a_x, a_y])
array_b = sympy.Matrix([b_x, b_y])
array_a.dot(array_b)

出力:

axbx+ayby

まとめ

今回はpythonで内積を求める方法を2つ紹介しました。

numpy.inner()を使用すると簡単に内積を求めることができます。

この記事を読んでpythonに興味を持った人は、次の記事もぜひ読んでみてください。

pythonを独学する方法について紹介しています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次