我有一个numpy 2d阵列[中/大型 - 比如500x500].我想找到它的元素指数的特征值.问题是某些值非常负(-800,-1000等),并且它们的指数下溢(意味着它们非常接近零,因此numpy将它们视为零).无论如何在numpy中使用任意精度?
我梦想的方式:
import numpy as np
np.set_precision('arbitrary') # <--- Missing part
a = np.array([[-800.21,-600.00],[-600.00,-1000.48]])
ex = np.exp(a) ## Currently warns about underflow
eigvals, eigvecs = np.linalg.eig(ex)
Run Code Online (Sandbox Code Playgroud)
我已经搜索了一个gmpy和mpmath的解决方案无济于事.任何想法都会受到欢迎.
在我的程序中,我需要以下矩阵乘法:
A = U * B * U^T
Run Code Online (Sandbox Code Playgroud)
其中B是M * M对称矩阵,并且U是N * M其列为正交的矩阵.所以我希望A它也是一个对称矩阵.
但是,Python并没有这么说.
import numpy as np
import pymc.gp.incomplete_chol as pyichol
np.random.seed(10)
# Create symmetric matrix B
b = np.matrix(np.random.randn(20).reshape((5,4)))
B = b * b.T
np.all(B== B.T)
Run Code Online (Sandbox Code Playgroud)
B确实是对称的:
In[37]: np.all(B== B.T)
Out[37]: True
# Create U
m = np.matrix(np.random.random(100).reshape(10,10))
M = m * m.T
# M
U, s, V = np.linalg.svd(M)
U = U[:, :5]
U.T * U
In[41]: …Run Code Online (Sandbox Code Playgroud)