numpy.linalg.matrix_power#
- linalg.matrix_power(a, n)[源代码]#
将方阵提升到(整数)幂 n .
对于正整数 n ,幂是通过重复矩阵平方和矩阵乘法计算的. 如果
n == 0,则返回与 M 形状相同的单位矩阵. 如果n < 0,则计算逆矩阵,然后将其提升到abs(n).备注
目前不支持对象矩阵的堆叠.
- 参数:
- a(…, M, M) array_like
要进行"幂运算"的矩阵.
- nint
指数可以是任何整数或长整数,正数,负数或零.
- 返回:
- an(…, M, M) ndarray 或矩阵对象
返回值与 M 的形状和类型相同;如果指数为正数或零,则元素的类型与 M 的元素类型相同. 如果指数为负数,则元素是浮点数.
- Raises:
- LinAlgError
对于非正方形矩阵或(对于负幂)无法进行数值反演的矩阵.
示例
>>> import numpy as np >>> from numpy.linalg import matrix_power >>> i = np.array([[0, 1], [-1, 0]]) # matrix equiv. of the imaginary unit >>> matrix_power(i, 3) # should = -i array([[ 0, -1], [ 1, 0]]) >>> matrix_power(i, 0) array([[1, 0], [0, 1]]) >>> 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 quaternion units not equal to 1 array([[ 0., -1., 0., 0.], [ 1., 0., 0., 0.], [ 0., 0., 0., 1.], [ 0., 0., -1., 0.]]) >>> matrix_power(q, 2) # = -np.eye(4) array([[-1., 0., 0., 0.], [ 0., -1., 0., 0.], [ 0., 0., -1., 0.], [ 0., 0., 0., -1.]])