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
I am using sparse matrices but the numpy.allclose() function is giving errors as it only takes numpy arrays as input. I don't want to convert the sparse matrices to arrays and back to sparse matrices again, as it will be inefficient. Is there another way to check two sparse matrices for allclose()?