私はPythonでいくつかのMatlabコードを変換しています。私はいくつかの行列操作を行う必要があります。私の行列(A)は(今は)65x3行列です。ただし、行数はプログラムのどのステップに応じて変わります。効率的なndarray操作
Matlabのでは、私が働いているコードは次のとおりです。
output = inv(A'*A) * A';
次のPythonコードはうまく予想される出力を再生します。私はちょうどこれをするために良い(Pythonic、高速など)方法がある場合は好奇心が強いですか?私は基本的なPythonとnumpyに固執しようとしています。
output = np.dot(np.linalg.inv(np.dot(np.transpose(A), A)), np.transpose(A))
助けてくれる人のおかげです。
転置用にショートカット「A.T」を使用すること以外は、はるかに良くできません。 (しかしこれは本当にちょうど目の砂糖です、実際の違いはありません) – Julien
行列Aの擬似逆行列を計算しているようです。アプリケーションが擬似逆行列を計算する必要がある場合を除き、逆行列の計算を避けることができれば、実行しないでください。ジョンD.クックのこの記事は、http://www.johndcook.com/blog/2010/01/19/dont-invert-that-matrix/の洞察を提供します。過小(または未決定)の方程式のシステムに対して最小二乗解を見つけようとするなら、['numpy.linalg.lstsq'](http://docs.scipy.org/doc/numpy/reference/ generated/numpy.linalg.lstsq.html)メソッドを使用してソリューションを直接計算します。 – rayryeng