$(x- \ mu)^ T \ Sigma ^ {-1}(x- \ mu)$のような行列積がある場合、これをnumpy配列に書き込む方法は次のようになりますreduce(numpy.dot,((x-mu).T, scipy.linalg.inv(Sigma), x-mu))
か?MatlabとRの構文は非常に単純なので、numpyに同等の演算子構文がないのは少し奇妙に思えます。
3 に答える
4
また、試すことができます:
x = x.view(np.matrix)
isigma = scipy.linalg.inv(Sigma).view(np.matrix)
result = (x-mu).T * isigma * (x-mu)
配列を行列として表示することにより、を使用するときに行列の乗算を実行する.__mul__
演算子を使用できるようになります。np.matrix
*
于 2012-08-21T14:22:10.970 に答える
1
次のように書くこともできます(Numpy> = 1.4程度)
from scipy.linalg import inv
(x - mu).T.dot(inv(Sigma)).dot(x - mu)
他の回答で述べたように、演算子の構文が制限されているのは、Pythonで使用できる演算子の数が制限されているためです。
于 2012-08-24T09:48:59.663 に答える
1
主な問題は*
、numpy配列の要素ごとの乗算としてすでに定義されており、行列の乗算に他の明白な演算子が残っていないことです。*
解決策は、Pierreが示唆しているように、行列の乗算を意味するnumpy行列に変換することです。
Pythonに新しい演算子タイプ(たとえば、PEP 225 )を追加する提案がいくつかあります。これにより、~*
行列の乗算を表すようなものが可能になります。
于 2012-08-21T15:04:26.893 に答える