Python:不使用循环将3x3矩阵乘以3nx1数组
我想用一个向量(3x1)做一个矩阵乘法(3x3矩阵)。“问题”是向量的每个分量都是另一个矩阵的每个分量,我不知道如何继续。有什么办法吗Python:不使用循环将3x3矩阵乘以3nx1数组,python,arrays,numpy,Python,Arrays,Numpy,我想用一个向量(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并保存结果。然后是x{2,6,10}.T
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并保存结果。然后是x{2,6,10}.T,x{3,7,11}.T,最后是x{4,8,12}.T。数组v1、v2和v3的长度相同
提前谢谢你!
问候,
XabiNumpy阵列: 使用两个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]])
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]])
如果首先将所有向量叠加到一个数组中,则可以使用单个矩阵乘法执行所需的操作:
vectors = np.vstack((vv1, v2, v3))
products = np.dot(A, v)
现在
products[:,i]
(或者products.T[i]
,如果您愿意的话)将A
与i
-第个向量乘积。如果您首先将所有向量叠加到一个数组中,您可以通过一个矩阵乘法来完成所需的操作:
vectors = np.vstack((vv1, v2, v3))
products = np.dot(A, v)
现在
products[:,i]
(或者products.T[i]
,如果你愿意的话)有了A
与i
-th向量的乘积;它还帮助我们了解你的心理工具箱中有什么,这使我们能够给你一个更有用的答案。不明白你为什么要在有或没有for循环的情况下这样做。numpy有矩阵乘法和转置的方法。你已经输入了麻木,为什么不直接使用它呢。它对C语言进行了优化,测试了代码,甚至显示了你最糟糕的尝试,也让我们有理由认为你已经尝试解决了这个问题;它还帮助我们了解你的心理工具箱中有什么,这使我们能够给你一个更有用的答案。不明白你为什么要在有或没有for循环的情况下这样做。numpy有矩阵乘法和转置的方法。你已经输入了麻木,为什么不直接使用它呢。它的C优化,测试代码正是为了这个目的。感谢您的回复!这是解决“问题”的好办法!谢谢你的回复!这是解决“问题”的好办法!