scipy稀疏矩阵 - 访问路径的多个元素

时间:2015-06-19 15:24:28

标签: python cython sparse-matrix

我有一个scipy稀疏矩阵A和一个(长)坐标列表

myrows=[i1,i2,...] mycols=[j1,j2,...]。我需要一个他们的值列表[A[i1,j2],A[i2,j2],...]。我怎么能快速做到这一点。循环太慢了。

我已经考虑过cython.inline()(我在代码的其他地方使用)或编织,但我不知道如何在cython或C ++中有效地使用稀疏类型。我错过了一些简单的东西吗?

目前,我正在使用看似效率低下且有时可能出错的黑客攻击 - 我会用错误消息标记。这是我写得很糟糕的代码。请注意,它依赖于在添加时要保留的元素的顺序,并假设myrows中的元素,mycols在A中。

import scipy.sparse as sps
def getmatvals(A,myrows,mycols)  #A is a coo_matrix
    B = sps.coo_matrix((range(1,1+A.nnz),(A.row,A.col)),shape=A.shape)
    T =  sps.coo_matrix(([A.nnz+1]*len(myrows),(myrows,mycols)),shape=A.shape)
    G = B-T  #signify myelements in G by negatives and others by 0's
    H = np.minimum([0]*A.nnz,G.data)  #remove extra elements 
    H = H[np.nonzero(H)]
    H = H + A.nnz
    return A.data[H]

0 个答案:

没有答案