继承自scipy.sparse.csr_matrix类

时间:2014-07-01 10:40:04

标签: python scipy subclass sparse-matrix

我想用一些方法扩充scipy.sparse.csr_matrix类,并替换其他一些用于个人用途。我正在创建一个继承自csr_matrix的子类,如下:

class SparseMatrix(sp.csr_matrix):
    def __init__(self, matrix):
        super(type(self), self).__init__(matrix)

但这不会起作用,抛出:

  

AttributeError:找不到toSpa

你能否向我解释一下我做错了什么?

1 个答案:

答案 0 :(得分:5)

Somewhere in the SciPy Sparse Matrix implementation类名的前三个字母用于定义一个方法,该方法将在不同的稀疏矩阵类型(see this thread)之间进行转换。因此,您必须使用如下名称来实现:

import numpy as np
from scipy.sparse import csr_matrix

class csr_matrix_alt(csr_matrix):
    def __init__(self, *args, **kwargs):
        super(csr_matrix_alt, self).__init__(*args, **kwargs)

s = csr_matrix_alt(np.random.random((10, 10)))
print(type(s))
#<class '__main__.csr_matrix_alt'>

csr_mymatrixcsr_test之类的其他名称等等......