如何将numpy.matrix提升为非整数幂?

时间:2015-12-22 06:39:54

标签: python numpy matrix scipy

**的{​​{1}}运算符不支持非整数幂:

numpy.matrix

我想要的是

>>> m
 matrix([[ 1. ,  0. ],
    [ 0.5,  0.5]])

>>> m ** 2.5
TypeError: exponent must be an integer

我可以使用octave:14> [1 0; .5 .5] ^ 2.5 ans = 1.00000 0.00000 0.82322 0.17678 numpy执行此操作吗?

注意:

这不是按元素操作的。正如this post所述,这是一个提升到某种幂的矩阵(在线性代数中)。

2 个答案:

答案 0 :(得分:11)

您可以使用Apple Documentation

>>> m
matrix([[ 1. ,  0. ],
        [ 0.5,  0.5]])
>>> scipy.linalg.fractional_matrix_power(m, 2.5)
array([[ 1.       ,  0.       ],
       [ 0.8232233,  0.1767767]])

答案 1 :(得分:8)

从这个question可以看出,矩阵的强大功能可以改写为:enter image description here

此代码使用scipy.linalg,结果与Octave相同:

import numpy as np
from scipy.linalg import logm, expm

M = np.matrix([[ 1. ,  0. ],[ 0.5,  0.5]])
x = 2.5
A = logm(M)*x
P = expm(A)

这是P:

的输出
Out[19]: 
array([[ 1.       , -0.       ],
   [ 0.8232233,  0.1767767]])