我試圖做空間衍生物,幾乎設法得到所有的循環出我的代碼,但是當我試圖總結一切在最後我有一個問題。我有一組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