Python Tips: ベクトル演算を扱いたい

Python でベクトル演算を行う方法をご紹介します。

結論からいえば「 numpy 」というライブラリを使う方法が最も一般的かと思います。

以下、 numpy を使った基本的なベクトル演算のやり方を見ていきます。

足し算はこんな感じ。

# ライブラリの読み込み
from numpy import array

# ベクトル演算をサポートした array インスタンスの生成
v1 = array([1, 3])
v2 = array([2, 5])

# ベクトル同士の演算
v3 = v1 + v2
print v3  # => array([3, 8])
# ベクトル同士の足し算

足し算と同様に引き算も可能です。

v4 = v1 - v2  # => array([-1, -2])

かけ算も。

v1 * v2  # => array([2, 15])
# 要素同士の掛け算
  • 演算子は内積ではなく「要素同士のかけ算」であることに注意が必要です。他のツールで「 * は内積」に馴染んでいる方は要注意です。

内積を使うには * ではなく dot メソッドを使います。

v1.dot(v2)  # => 17 (1*2 + 3*5 の結果)

割り算もサポートされています。こちらも要素同士。

v2 / v1  # => array([2, 1])

スカラー値との演算も可能です。

v1 * 2  # => array([2, 6])
2 * v1  # => array([2, 6])

通常のリストとの演算もできてしまいます。これは個人的には気持ち悪いです。。

v1 * [2, 1]  # => array([2, 6])

以上です。

numpy はベクトルだけでなく行列やその他多くの数学的機能を収めたライブラリなので、もっと詳しく知りたい方は公式ページをご参照ください。