Python中的内存高效对称稀疏矩阵

时间:2018-12-05 16:53:43

标签: python slice sparse-matrix

我想在python中构造一个非常稀疏的对称矩阵,但是,在scipy中没有这样的表示形式。因此,我正在尝试实现一个重写lil_matrix方法的类,以便在sklearn算法(例如,NearestNeighbor)中使用此类表示形式。

我主要遇到切片问题,因为索引列表和确切位置很容易被覆盖。

是否有一种方法可以构建此功能的其余部分以使切片工作?

class sll_matrix(lil_matrix):
    def __init__(self, arg1, dtype=None):
        if isinstance(arg1, int) or isinstance(arg1,np.integer):
            lil_matrix.__init__(self, (arg1,arg1), dtype=dtype)
        elif isinstance(arg1,tuple) and isshape(arg1):
            lil_matrix.__init__(self, arg1, dtype=dtype)
        else:
            raise ValueError('invalid use of constructor. sll only use shape')
    def __getitem__(self, index):
        """Return the element(s) index=(i, j), where j may be a slice.
        This always returns a copy for consistency, since slices into
        Python lists return copies.
        """

        # Scalar fast path first
        if isinstance(index, tuple) and len(index) == 2:
            i, j = index
            if ((isinstance(i, int) or isinstance(i, np.integer)) and
                    (isinstance(j, int) or isinstance(j, np.integer))):
                if j > i:
                    i,j = swap(i,j)
                return lil_matrix.__getitem__(self, (i,j))
            # Utilities found in IndexMixin
        i, j = self._unpack_index(index)

0 个答案:

没有答案