gpt4 book ai didi

python - SciPy 稀疏矩阵上的 numpy.allclose()

转载 作者:行者123 更新时间:2023-11-28 18:20:55 25 4
gpt4 key购买 nike

def simrank_sparse(A,c,maxiter,eps=1e-4):

if not sp.issparse(A):
raise Exception("Input is not a sparse matrix ")

n=sp.csr_matrix.get_shape(A)[0]
Q=misc.get_column_normalized_matrix(A)
sim=sp.eye(n)
I=sp.eye(n)
sim_prev=sp.csr_matrix(sim)

for t in range(maxiter):

if sc.allclose(sim,sim_prev,atol=eps):
break
sim_prev=sc.copy(sim)
sim=c*(Q.T*sim_prev*Q)+(1-c)*I

print("Converge after %d iterations (eps=%f)." % (t, eps))
return sim

我正在使用稀疏矩阵,但 numpy.allclose() 函数给出了错误,因为它只将 numpy 数组作为输入。我不想将稀疏矩阵转换为数组然后再转换回稀疏矩阵,因为这样效率很低。是否有另一种方法来检查 allclose() 的两个稀疏矩阵?

最佳答案

您可以设置体系结构进行比较,然后使用 numpy 进行评估:

def csr_allclose(a, b, rtol=1e-5, atol = 1e-8):
c = np.abs(np.abs(a - b) - rtol * np.abs(b))
return c.max() <= atol

csr_matrix c 将包含被比较的两个矩阵的差异,如果任何绝对差异大于您的阈值水平,csr_allclose 将返回 False。但是,此实现不包括 numpy.allclose 方法提供的 NaN 功能。

关于python - SciPy 稀疏矩阵上的 numpy.allclose(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45134837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com