Module project.test.test_matrix
Expand source code
import numpy as np
from scipy import sparse, stats
def generate_smatrix(m, n, density=1, bound=0.5, **kwargs):
return sparse.random(m,
n,
density=density,
format="csr",
data_rvs=stats.uniform(-bound, 1).rvs)
def scale_spectral_smatrix(matrix: sparse.issparse,
spectral_radius=1.25,
in_place=False):
try:
eigs = sparse.linalg.eigs(matrix)[0]
except sparse.linalg.ArpackNoConvergence as e:
eigs = e.eigenvalues
finally:
spectral = (spectral_radius / max(abs(eigs)))
return matrix * spectral
if __name__ == "__main__":
from timeit import default_timer as timer
from pprint import pprint
tempos = [(timer(),
scale_spectral_smatrix(generate_smatrix(2000, 2000,
0.0001)), timer())
for _ in range(1000)]
stat = np.mean([z - x for (x, _, z) in tempos])
pprint(stat)
Functions
def generate_smatrix(m, n, density=1, bound=0.5, **kwargs)-
Expand source code
def generate_smatrix(m, n, density=1, bound=0.5, **kwargs): return sparse.random(m, n, density=density, format="csr", data_rvs=stats.uniform(-bound, 1).rvs) def scale_spectral_smatrix(matrix:, spectral_radius=1.25, in_place=False) -
Expand source code
def scale_spectral_smatrix(matrix: sparse.issparse, spectral_radius=1.25, in_place=False): try: eigs = sparse.linalg.eigs(matrix)[0] except sparse.linalg.ArpackNoConvergence as e: eigs = e.eigenvalues finally: spectral = (spectral_radius / max(abs(eigs))) return matrix * spectral