我想用矢量(3x1)进行矩阵乘法(3x3矩阵)。 “问题”是矢量的每个组成部分都是另一个矩阵,我不知道如何继续。有没有办法做到这一点?
import numpy as np
A = np.array([[1,1,1],[2,1,0],[1,0,1]])
v1 = np.array([[1,2,3,4]])
v2 = np.array([[5,6,7,8]])
v3 = np.array([[9,10,11,12]])
我想要乘以:A x {1,5,9} .T并保存结果。然后A x {2,6,10} .T,A x {3,7,11} .T,最后是A x {4,8,12} .T。数组v1,v2和v3的长度相同。
提前谢谢! 的问候,
哈维
答案 0 :(得分:2)
如果您首先将所有向量堆叠到一个数组中,您可以使用单个矩阵乘法进行操作:
vectors = np.vstack((vv1, v2, v3))
products = np.dot(A, v)
现在products[:, i]
(或products.T[i]
,如果您愿意)的产品A
与第i
个向量相同。
答案 1 :(得分:1)
Numpy Arrays:
使用两个numpy数组;一个3 x 3和一个3x1:
>>> import numpy as np
>>> a = np.ones((3,3))
>>> b=np.random.rand(3,1)
array([[ 0.08970952],
[ 0.56447089],
[ 0.57500698]])
如果您想要矩阵乘法,可以使用dot
>>> np.dot(a,b)
array([[ 1.22918739],
[ 1.22918739],
[ 1.22918739]])
如果你想要元素明智的多元化,你可以使用*
>>> a*b
array([[ 0.08970952, 0.08970952, 0.08970952],
[ 0.56447089, 0.56447089, 0.56447089],
[ 0.57500698, 0.57500698, 0.57500698]])
Numpy Matrices:
请注意,如果您使用的是numpy矩阵,那么*
运算符可用于矩阵乘法:
>>> c = np.mat(a) # converts from array to matrix
>>> d = np.mat(b)
>>> c*d
matrix([[ 1.22918739],
[ 1.22918739],
[ 1.22918739]])