我有两个numpy数组a,B像这样。
a
B
>> a [1 2 3] >> type(a) <class 'numpy.ndarray'> >> B [[1 2 3] [2 2 7] [3 4 6]] >> type(B) <class 'numpy.ndarray'>
我想做像a * B * a_transpose这样的矩阵乘法,这是(1*3)*(3*3)*(3*1)类型的矩阵乘法,结果应该是(1*1)。如何在numpy中执行此操作?
a * B * a_transpose
(1*3)*(3*3)*(3*1)
(1*1)
numpy
db2dz4w81#
a.T是矩阵a的转置
a.T
temp = np.dot(a, B) # a * B final= np.dot(temp, a.T) #(a * B) * a_transpose
例如,155
155
von4xj4u2#
您可以轻松做到:
import numpy as np a = np.array([1, 2, 3]) B = np.array([[1, 2, 3], [2, 2, 7], [3, 4, 6]])
(a@B)@a #output 155
6gpjuf903#
可以使用np.einsum:
np.einsum
np.einsum("i,ij,j->", a,B,a) > 155
或矩阵乘法,
[a] @ (B @ a) > np.array([155])
mw3dktmi4#
你可以用“@”做矩阵乘法,你可以用.transpose()得到向量“a”的转置,所以你需要做:a @B @a
4条答案
按热度按时间db2dz4w81#
a.T
是矩阵a
的转置例如,
155
von4xj4u2#
您可以轻松做到:
6gpjuf903#
可以使用
np.einsum
:或矩阵乘法,
mw3dktmi4#
你可以用“@”做矩阵乘法,你可以用.transpose()得到向量“a”的转置,所以你需要做:
a @B @a