2014-02-19 29 views
8

的我可以很容易地計算類似:逆numpy.dot

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

其中A是一個簡單的數組並且k,M0是已知的值。

我想要不同的東西。有固定的R,M和K,我需要獲得m0。 有沒有一種方法可以通過函數numpy.dot()的逆來計算? 或者只有重新排列矩陣纔有可能?

回答

8
M = numpy.dot(R,[k,m0]) 

正在執行矩陣乘法。 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) 

注意km0確定,給出MR(假設len(M) >= 2)。

+0

謝謝!這完全解決了我所需要的。 – neryon