array
2 次元の 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]])