繁体   English   中英

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

[英]How to raise a numpy.matrix to non-integer power?

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

我可以用numpyscipy吗?

注意:

这不是元素操作。 如本文所述,它是一个矩阵(线性代数),具有一定的幂

您可以使用scipy.linalg.fractional_matrix_power

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

从这个问题可以看出,矩阵的幂可以重写为: 在此处输入图片说明

此代码使用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]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM