2017-01-24 10 views
-2

私は行列A=[2,5,8]と行列B=[65,40,20]を持っています。 Pythonで Pythonの1次元行列右分割

は私が右の除算の結果を取りたい A/B=0.0787 (私はMatlabの中でそれをテストしてみた)Pythonで、我々はの逆を取ることができないので、私はA/Bを行うことはできませんPythonでは

1次元の行列です。例えばinv(b)のようになります。

A/BをPythonで実行するにはどうすればよいですか?

+1

あなたの例AとBは行列ではありません。 Matlabのどのコードがあなたのために働いたのですか? – xnx

答えて

0

私は、AとBを行行列と考えることを前提にしています。

この場合、前述したように、Bの逆数は存在しません。一般に、行列の逆行列は、正方行列の部分集合に対してのみ存在する。 Bは正方行列ではないので、Bの逆行列は存在しない。そして、2つの行列A/Bの除算がA * B -1に等しいので、あなたの場合、AとBの除算は存在しません。

これは、AとB(種類)を分けることができるBのnumpy linkの擬似逆行列を生成することができます。私の推測では、Matlabはあなたの計算を行うためにBの疑似逆関数を使用しています。あなたはこのコードをしようとした場合、あなたは別の問題を発見するでしょう

A = numpy.array([[2,5,8]]) 
B = numpy.array([[65,40,20]]) 
A * numpy.linalg.pinv(B) 

:Pythonで同じことを行うには

はこれを試してみてください。 A/B = A * B -1なので、計算結果はMatlabのようにスカラーではなく行列になります。

+0

ありがとうございますが、結果は行列ではなく数値になります。これは可能ですか? – Theodoros

+0

いいえ、これは数学的見地から分かりません。 Matlabで何をしたのかは分かりませんが、数学的には意味がありません。 –

+0

正気の問題ではありません。問題は、どの行列演算を実行したいかです。行列除算の演算は行列を返す。ちょうど数字だけが必要な場合は、別の操作を探しています。正確に何が起こりたいのかを教えていただけたら、私はあなたに正しい操作を指示するのに役立つかもしれません。 –

関連する問題