[英]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
我可以用numpy
或scipy
吗?
这不是元素操作。 如本文所述,它是一个矩阵(线性代数),具有一定的幂次 。
您可以使用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.