上一主题

numpy.einsum

下一主题

numpy.kron

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.]])