如何将numpy数组提升为幂?(对应于重复的矩阵乘法,而不是元素)

mir*_*ari 15 python numpy scipy

我想提出一个二维的numpy array,让我们称它为A一些数字的力量n,但我迄今为止未能找到函数或运算符来做到这一点.

我知道我可以将它转换为matrix类型并使用当时的事实(类似于Matlab中的行为),A**n正是我想要的,(对于array相同的表达式意味着元素取幂).matrix然而,向后和向后投射似乎是一个相当丑陋的工作方式.

当然,必须有一个很好的方法来执行该计算,同时保持格式array

Joe*_*ton 24

我相信你想要的 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)
Run Code Online (Sandbox Code Playgroud)

这会产生:

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]])
Run Code Online (Sandbox Code Playgroud)