如何使用Numpy将(1*3)向量除以(3*3)矩阵?a/b不工作

2024-04-24 16:16:57 发布

您现在位置:Python中文网/ 问答频道 /正文

a = np.array([[0.1562,0.0774,0.0702]])
b = np.array([
[0.0365,0.0191,0.0217],
[0.0191,0.0331,0.0292],
[0.0217,0.0292,0.0591]])

MATLAB中的输出(所需输出)为:

 4.4911    0.2724   -0.5958

我在Python中得到的输出是:

4.27945205 4.05235602 3.23502304
8.17801047 2.33836858 2.40410959
7.19815668 2.65068493 1.18781726

我在Python中使用的代码是:

a/b

我也尝试过np.divide(a,b),但它们都给出了相同的输出,这不是我想要的。在MATLAB中是否有“/”与“/”的关系

我的Python代码应该是什么,才能获得与MATLAB相同的输出


Tags: 代码关系nparraymatlabdivide
1条回答
网友
1楼 · 发布于 2024-04-24 16:16:57

您可以使用numpy.linalg.lstsq解决此系统

import numpy as np
    
a = np.array([[0.1562,0.0774,0.0702]])
b = np.array([
        [0.0365,0.0191,0.0217],
        [0.0191,0.0331,0.0292],
        [0.0217,0.0292,0.0591]])
        
        
x = np.linalg.lstsq(b.T,a.T)
print(x)

Result:

(array([[ 4.49111376],
       [ 0.2724206 ],
       [-0.59580119]]), array([], dtype=float64), 3, array([0.09268238, 0.02342602, 0.0125916 ]))

正如@WarrenWeckesser所指出的,对于这个问题,np.linalg.solve也将起作用,类似于上面的语法

相关问题 更多 >