私は、ドットプロダクトには合計の積が含まれているという事実を利用して、回答がnp.dot
だった同様のquestionを尋ねました。 (私の理解のため)軸のループオーバーを放送に置き換えてください。
ここでは、dot
が適用されるとは思わない、同様の問題があります。なぜなら、合計の代わりに、要素単位の対角線を取りたいからです。もしそうなら、私はそれを正しく適用することができませんでした。
マトリックスx
及び配列err
考える:
x = np.matrix([[ 0.02984406, -0.00257266],
[-0.00257266, 0.00320312]])
err = np.array([ 7.6363226 , 13.16548267])
ループと私の現在の実装は、次のとおり
err
各
i
ため
x.dot(i)
の対角線をとる
res = np.array([np.sqrt(np.diagonal(x * err[i])) for i in range(err.shape[0])])
print(res)
[[ 0.47738755 0.15639712]
[ 0.62682649 0.20535487]]
。これはベクトル化できますか?言い換えれば、x * err
の出力をnp.diagonal
とし、各対角線に対して1つの要素を持つ2次元配列を得ることができますか?
は遅い新しいnumpyの配列を、割り当てを回避するためにキーワードを使用することができます。 –
Pythonの旧バージョンでは** 0.5よりも高速です。新しいことについてはわからない。 https://stackoverflow.com/questions/327002/which-is-faster-in-python-x-5-or-math-sqrtx私は通常、sqrtと入力するのが面倒です –
新しい配列の割り当てについて心配しないでくださいこれを何回も行うのではなく、一度だけ行うようにしてください。 –