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

Python 如何将numpy.matrix提升为非整数次幂?,python,numpy,matrix,scipy,Python,Numpy,Matrix,Scipy,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或scip

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
scipy
来执行此操作吗

注: 这不是一个元素操作。它是一个矩阵(在线性代数中)被提升到某个幂,如中所述。

由此可以看出,矩阵的幂可以重写为:

该代码使用scipy.linalg,结果与倍频程相同:

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]])
您可以使用:


它应该与数组一起工作。就我个人而言,我总是使用数组。有时会导致代码有点笨拙,但我不必区分矩阵和数组对象。这个问题是重复的,但答案没有太多重叠。太好了!那正是我想要的。谢谢
>>> m
matrix([[ 1. ,  0. ],
        [ 0.5,  0.5]])
>>> scipy.linalg.fractional_matrix_power(m, 2.5)
array([[ 1.       ,  0.       ],
       [ 0.8232233,  0.1767767]])