反转numpy.dot

Ger*_*ano 9 python numpy inverse

我可以轻松计算出类似的东西:

R = numpy.column_stack([A,np.ones(len(A))]) 
M = numpy.dot(R,[k,m0])
Run Code Online (Sandbox Code Playgroud)

其中A是一个简单的数组,k,m0是已知值.

我想要不同的东西.固定了R,M和k后,我需要获得m0.有没有办法通过函数numpy.dot()的反函数来计算它?或者只能通过重新排列矩阵来实现?

unu*_*tbu 9

M = numpy.dot(R,[k,m0])
Run Code Online (Sandbox Code Playgroud)

正在执行矩阵乘法.M = R * x.

所以要计算逆,你可以使用np.linalg.lstsq(R, M):

import numpy as np
A = np.random.random(5)
R = np.column_stack([A,np.ones(len(A))]) 
k = np.random.random()
m0 = np.random.random()
M = R.dot([k,m0])

(k_inferred, m0_inferred), residuals, rank, s = np.linalg.lstsq(R, M)

assert np.allclose(m0, m0_inferred)
assert np.allclose(k, k_inferred)
Run Code Online (Sandbox Code Playgroud)

请注意,这两个 km0决心,给予MR(假设len(M) >= 2).