NumPy配列を累乗するにはどうすればいいですか?(要素ごとではなく、繰り返しの行列乗算に対応)質問する

NumPy配列を累乗するにはどうすればいいですか?(要素ごとではなく、繰り返しの行列乗算に対応)質問する

array2 次元の numpy (これを と呼ぶことにします)Aを何らかの数値 で累乗したいのですnが、これまでのところ、それを実行する関数または演算子を見つけることができませんでした。

これを型にキャストしてmatrix、その事実を利用すれば (Matlab での動作と同様に)、A**nまさに私が望んでいること (同じ式は要素ごとの累乗を意味するため) を実行できることはわかっていますarray。ただし、キャストしてmatrix戻すのは、かなり見苦しい回避策のように思えます。

フォーマットを維持しながらその計算を実行する良い方法が確かにあるはずですarray

ベストアンサー1

あなたが望むのはnumpy.linalg.matrix_power

簡単な例を挙げます。

import numpy as np
x = np.arange(9).reshape(3,3)
y = np.matrix(x)

a = y**3
b = np.linalg.matrix_power(x, 3)

print a
print b
assert np.all(a==b)

これにより次のようになります:

In [19]: a
Out[19]: 
matrix([[ 180,  234,  288],
        [ 558,  720,  882],
        [ 936, 1206, 1476]])

In [20]: b
Out[20]: 
array([[ 180,  234,  288],
       [ 558,  720,  882],
       [ 936, 1206, 1476]])

おすすめ記事