numpy矩阵乘法

nfs0ujit  于 12个月前  发布在  其他
关注(0)|答案(4)|浏览(111)

我有两个numpy数组aB像这样。

>> 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中执行此操作?

db2dz4w8

db2dz4w81#

a.T是矩阵a的转置

temp = np.dot(a, B)        # a * B

final= np.dot(temp, a.T)   #(a * B) * a_transpose

例如,155

von4xj4u

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
6gpjuf90

6gpjuf903#

可以使用np.einsum

np.einsum("i,ij,j->", a,B,a)
> 155

或矩阵乘法,

[a] @ (B @ a)
> np.array([155])
mw3dktmi

mw3dktmi4#

你可以用“@”做矩阵乘法,你可以用.transpose()得到向量“a”的转置,所以你需要做:
a @B @a

相关问题