我试图做空间衍生物,几乎设法得到所有的循环出我的代码,但是当我试图总结一切在最后我有一个问题。我有一组N~=250k
节点。我发现节点对i,j
与i.size=j.size=~7.5M
是在一定的搜索距离内,最初来自np.triu_indices(n,1)
并通过一系列布尔面具来冲洗出不相互影响的节点。现在我想总结其他节点对每个节点的影响。向量化没有scipy.sparse的稀疏总和
目前,我有这样的:
def sparseSum(a,i,j,n):
return np.array([np.sum(a[np.logical_or(i==k,j==k)],axis=0) for k in range(n)])
这是非常缓慢的。我想要的是矢量化的东西。如果我有scipy我可以做
def sparseSum(a,i,j,n):
sp=scipy.sparse.csr_matrix((a,(i,j)),shape=(n,n))+ scipy.sparse.csr_matrix((a,(j,i)),shape=(n,n))
return np.sum(sp, axis=0)
但我在一个不包括scipy的Abaqus实现中这样做。有没有办法做到这种numpy只?
大概应该补充'n =〜250k'和'i.size =〜7.6M'。我认为'mask'可能导致'memoryError',但我会尝试 –
是的,它挂起。 'mask'是一个238GB的布尔数组,我的计算 –
@DanielForsman我假设'a'是一个二维数组/矩阵。它有多少列? – Divakar