numpy.linalg.matrix_power¶
-
numpy.linalg.
matrix_power
(M, n)[source]¶ 将方阵转化为(整数)幂n。
对于正整数n,通过重复的矩阵平方和矩阵乘法计算功率。如果
n == 0
,则返回与M相同形状的单位矩阵。如果n 0
,则计算逆,然后提高到abs(n)
。参数: M:ndarray或矩阵对象
矩阵必须为正方形,即
M.shape == (m, m) / t4>
,其中m为正整数。n:int
指数可以是任何整数或长整数,正,负或零。
返回: M ** n:ndarray或矩阵对象
返回值的形状和类型与M相同;如果指数为正或零,那么元素的类型与M的相同。如果指数为负,则元素为浮点。
上升: LinAlgError
如果矩阵不是数字可逆的。
也可以看看
matrix
- 提供与求幂运算符(
**
,而不是^
)等效的函数。
例子
>>> from numpy import linalg as LA >>> i = np.array([[0, 1], [-1, 0]]) # matrix equiv. of the imaginary unit >>> LA.matrix_power(i, 3) # should = -i array([[ 0, -1], [ 1, 0]]) >>> LA.matrix_power(np.matrix(i), 3) # matrix arg returns matrix matrix([[ 0, -1], [ 1, 0]]) >>> LA.matrix_power(i, 0) array([[1, 0], [0, 1]]) >>> LA.matrix_power(i, -3) # should = 1/(-i) = i, but w/ f.p. elements array([[ 0., 1.], [-1., 0.]])
有一些更复杂的例子
>>> q = np.zeros((4, 4)) >>> q[0:2, 0:2] = -i >>> q[2:4, 2:4] = i >>> q # one of the three quarternion units not equal to 1 array([[ 0., -1., 0., 0.], [ 1., 0., 0., 0.], [ 0., 0., 0., 1.], [ 0., 0., -1., 0.]]) >>> LA.matrix_power(q, 2) # = -np.eye(4) array([[-1., 0., 0., 0.], [ 0., -1., 0., 0.], [ 0., 0., -1., 0.], [ 0., 0., 0., -1.]])