Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 矩阵乘法维数_Python_Numpy_Matrix Multiplication - Fatal编程技术网

Python 矩阵乘法维数

Python 矩阵乘法维数,python,numpy,matrix-multiplication,Python,Numpy,Matrix Multiplication,我有一个nx3向量: v = [v1, [[x,y,z], v2, = [x,y,z], vn]. [x,y,z]] 和一个nx3x3矩阵: M = [M1, M2, Mn] 结果应该是: w = [M1 x v1, M2 x v2, Mn x vn] 总之,我想用一个nx3形状的向量v乘以一个nx3x3形状的矩阵,得到一个nx3形状的向量 我无法掌握维数的诀窍,因此矩阵乘法将按我所希望的那样进行。 我们将不胜感激 PS

我有一个nx3向量:

v = [v1,   [[x,y,z],
    v2,   = [x,y,z],
    vn].    [x,y,z]]
和一个nx3x3矩阵:

M = [M1,
     M2,
     Mn]
结果应该是:

w = [M1 x v1,
     M2 x v2,
     Mn x vn]
总之,我想用一个nx3形状的向量v乘以一个nx3x3形状的矩阵,得到一个nx3形状的向量

我无法掌握维数的诀窍,因此矩阵乘法将按我所希望的那样进行。 我们将不胜感激

PS:我正在将Python与numpy结合使用,但尽管我也很欣赏完成的numpy实现,但我想当我知道如何操作维度时,我可以自己在numpy中实现它

我还想使用纯矩阵乘法和无循环

您可以使用广播:

ret = (M @ v[...,None]).reshape(v.shape)

### check
loop = np.array([M[i] @ v[i] for i in range(n)])
(ret==loop).all()
# True
您可以使用广播:

ret = (M @ v[...,None]).reshape(v.shape)

### check
loop = np.array([M[i] @ v[i] for i in range(n)])
(ret==loop).all()
# True

为什么不完全按照你写索引的方式来做呢

w = np.einsum('kij,kj->ki', M, v)

这相当于wki=Mkijvkj。

为什么不完全按照使用索引编写的方式来做呢

w = np.einsum('kij,kj->ki', M, v)

这相当于wki=Mkijvkj。

请更正您的代码。会有用的。我不能解析你的第一个代码片段。当然你不能,因为我不是在问一个具体的问题,而是一个关于如何正确地将nx3x3与nx3向量矩阵相乘的一般问题。“代码片段”只是为了说明向量和矩阵,请更正您的代码。会有用的。我不能解析你的第一个代码片段。当然你不能,因为我不是在问一个具体的问题,而是一个关于如何正确地将nx3x3与nx3向量矩阵相乘的一般问题。“代码片段”只是为了说明向量和矩阵的工作原理以及提供证明的好处!工作和奖金点提供证明!因为我不知道numpy命令的存在。谢谢你把它介绍给我这个命令可以创造奇迹。检查文档。因为我不知道numpy命令存在。谢谢你把它介绍给我这个命令可以创造奇迹。检查文档。