相关疑难解决方法(0)

numpy任意精度线性代数

我有一个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的解决方案无济于事.任何想法都会受到欢迎.

python math numpy linear-algebra arbitrary-precision

16
推荐指数
3
解决办法
1万
查看次数

Numpy矩阵乘法U*B*UT导致非对称矩阵

在我的程序中,我需要以下矩阵乘法:

A = U * B * U^T
Run Code Online (Sandbox Code Playgroud)

其中BM * M对称矩阵,并且UN * 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)

python numpy matrix linear-algebra

2
推荐指数
1
解决办法
314
查看次数