私はマトリックスを持っています
A = [[ 1. 1.]
[ 1. 1.]]
および 2 つの配列 (a
およびb
)、すべての配列には 20 個の浮動小数点数が含まれています
( x' = A * ( x )
y' ) y
これは正しいです?m = A * [a, b]
私はマトリックスを持っています
A = [[ 1. 1.]
[ 1. 1.]]
および 2 つの配列 (a
およびb
)、すべての配列には 20 個の浮動小数点数が含まれています
( x' = A * ( x )
y' ) y
これは正しいです?m = A * [a, b]
NumPy 配列を使用した行列乗算は、np.dotで実行できます。X
形状が (i,j) でY
形状が (j,k) の場合、np.dot(X,Y)
は行列の積になり、形状は (i,k) になります。の最後の軸X
と の最後から 2 番目の軸Y
が乗算され、合計されます。
ここで、が shapea
を持っている場合は、 shapeを持ちます:b
(20,)
np.vstack([a,b])
(2, 20)
In [66]: np.vstack([a,b]).shape
Out[66]: (2, 20)
1 行目に の値、2 行目にnp.vstack([a, b])
の値を持つ 2x20 行列と考えることができます。a
b
形状が (2,2) であるためA
、行列の乗算を実行できます。
m = np.dot(A, np.vstack([a,b]))
形状 (2, 20) の配列に到達します。の最初の行にm
はx'
値が含まれ、2 番目の行にはy'
値が含まれます。
NumPy には(特別な種類の NumPy 配列)のmatrix
サブクラスもあり、2D 配列で行列の乗算を行うための便利な構文があります。(作成するプレーンではなく) とndarray
定義A
すると、演算子を使用して行列の乗算を行うことができます。matrix
ndarray
np.array(...)
*
以下に両方の方法を示します(A
プレーンndarray
であり、A2
であるmatrix
):
import numpy as np
A = np.array([[1.,1.],[1.,1.]])
A2 = np.matrix([[1.,1.],[1.,1.]])
a = np.random.random(20)
b = np.random.random(20)
c = np.vstack([a,b])
m = np.dot(A, c)
m2 = A2 * c
assert np.allclose(m, m2)