0

我想用一个向量(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 的长度相同。

先感谢您!问候,

沙比

4

2 回答 2

2

如果您首先将所有向量堆叠到一个数组中,则可以使用单个矩阵乘法执行您之后的操作:

vectors = np.vstack((vv1, v2, v3))
products = np.dot(A, v)

现在products[:, i](或者products.T[i],如果您愿意的话)具有Ai-th 向量的乘积。

于 2013-08-06T13:04:44.523 回答
2

Numpy 数组:

使用两个 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 矩阵:

请注意,如果您使用的是 numpy 矩阵,则该*运算符可用于矩阵乘法:

>>> c = np.mat(a)   # converts from array to matrix
>>> d = np.mat(b)
>>> c*d
matrix([[ 1.22918739],
        [ 1.22918739],
        [ 1.22918739]])
于 2013-08-06T13:00:22.323 回答