Pythonでまとまったデータや行列を扱うときに便利なNumPyの基礎的な使い方を解説します。と言ってもどこにでも転がっている情報ですので自分用のメモです。(正直、ブログでコードをうまく表示するのがけっこう難しくて時間がかかりました。コードのハイライトはプラグイン依存だから怖い。。)
ベクトル、行列の作成
ベクトル、行列の作成はarray()メソッドで行います。実際には多次元配列を用いてベクトル、行列を表現し、高速計算を行うことができます。 matrix() というものありますが、ここではいったん置いておきます。
# -*- coding: utf-8 -*-
import numpy as np
#ベクトル、行列の作成
a = np.array([1,2,3])
b = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
print('a=')
print(a)
print('b=')
print(b)
a=
[1 2 3]
b=
[[1 2 3]
[4 5 6]
[7 8 9]]
掛け算(アダマール積)
*演算子で掛け算を行うとアダマール積(同行同列同士の要素の積)が計算されます。
c = a * a
print('c=')
print(c)
# * はアダマール積(同行同列同士の要素の積)で処理される
d = b * b
print('d=')
print(d)
c=
[1 4 9]
d=
[[ 1 4 9]
[16 25 36]
[49 64 81]]
行列の積
行列の積を行いたいときはdot()メソッドを使います。
#行列の積はdot()メソッドを使う
e = np.dot(a, b)
print('e=')
print(e)
f = np.dot(b, b)
print('f=')
print(f)
e=
[30 36 42]
f=
[[ 30 36 42]
[ 66 81 96]
[102 126 150]]
足し算、引き算
足し算はそのままです。引き算も同様です。Pythonはb*2もそのまま記述すれば計算してくれます。行列計算が楽なのがC言語と比べるとよくわかります。
#足し算はそのまんま
g = a + a
h = b - b * 2
print('g=')
print(g)
print('h=')
print(h)
g=
[2 4 6]
h=
[[-1 -2 -3]
[-4 -5 -6]
[-7 -8 -9]]