libro
www.tuyano.com
初心者のためのJupyter入門

ベクトル・行列の演算 (2/4)

作成:2018-02-03 11:54
更新:2018-02-03 20:50

■行列の基本演算

続いて、行列の基本的な演算についてです。行列の積や結合、逆行列、行列式といったものについて説明します。


●行列の積
np.dot(《行列1》,《行列2》)
既に触れたように、matrixの場合、行列の積は乗算(*)で求めることができます。では、ndarrayで行列の積を求める場合はどうするのか?というと、dotというメソッドを使います。このdotmatrixでももちろん使えます。例えば、こんな具合です。
numpy.dot([ [1, 2], [3, 4] ], [ [1, 2], [3, 4] ])
 ↓
[[ 7, 10],
[15, 22]]

●テンソル積
np.outer(《行列1》,《行列2》)
outerは、ベクトルの外積で登場しましたね。これは行列では、2つの行列ですべての要素をかけ合わせるテンソル積を求めるのに使われます。引数に2つの行列オブジェクトを指定すると、テンソル積の行列オブジェクトを返します。
m = numpy.array([[1, 2], [3, 4]])
n = numpy.ones((2,2))
t = numpy.outer(m, n)

print(m)
print(n)
print(t)
 ↓
[[1 2]    # m行列
[3 4]]

[[ 1.  1.]    # n行列
[ 1.  1.]]

[[ 1.  1.  1.  1.]    # テンソル積
[ 2.  2.  2.  2.]
[ 3.  3.  3.  3.]
[ 4.  4.  4.  4.]]

●行列の結合
変数 = numpy.hstack(《行列1》,《行列2》)
変数 = numpy.vstack(《行列1》,《行列2》)
2つの行列を結合するための機能は、hstack, vstackというメソッドとして用意されています。hstackは水平に結合し、vstackは垂直に結合をします。例えば、こんな具合です。
s = numpy.identity(2)
m = numpy.matrix([[1, 2],[3, 4]])
print(numpy.vstack([m,s]))
print(numpy.hstack([m,s]))
 ↓
[[ 1.  2.]
[ 3.  4.]
[ 1.  0.]
[ 0.  1.]]

[[ 1.  2.  1.  0.]
[ 3.  4.  0.  1.]]

●逆行列
変数 = numpy.linalg.inv(《行列》)
逆行列は、numpy.linalgにあるinvメソッドを使います。これは引数の行列の逆行列を返します。例えば、こんな具合です。
numpy.linalg.inv([[1, 2],[3, 4]])
 ↓
[[-2.   1. ]
[ 1.5 -0.5]]

●行列式
行列式は、numpy.linalgにあるdetメソッドを使います。引数に行列を指定することで行列式を求められます。こんな具合ですね。
m = np.matrix([[1, 2], [3, 4]])
np.linalg.det(m)
 ↓
-2.0

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「初心者のためのJupyter入門」に戻る