继承自scipy.sparse.csr_matrix类

Jim*_*y C 6 python subclass scipy sparse-matrix

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

class SparseMatrix(sp.csr_matrix):
    def __init__(self, matrix):
        super(type(self), self).__init__(matrix)
Run Code Online (Sandbox Code Playgroud)

这不会起作用,抛出:

AttributeError:找不到toSpa

你能告诉我我做错了什么吗?

Sau*_*tro 5

在SciPy Sparse Matrix实现中某处,类名的前三个字母用于定义将在不同稀疏矩阵类型之间进行转换的方法(请参阅此线程).因此,您必须使用如下名称来实现:

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'>
Run Code Online (Sandbox Code Playgroud)

像其他的名字csr_mymatrix,csr_test等将有可能...