当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何将numpy.matrix提升为非整数幂?》经验,为你挑选了2个好方法。

**为运营商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

注意:

这不是元素操作.正如本文所述,这是一个提升到一定功率的矩阵(在线性代数中).



1> DSM..:

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



2> charles..:

从这个问题可以看出,矩阵的强大功能可以改写为:在此输入图像描述.

这段代码使用了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]])

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有