我想用一些方法扩充scipy.sparse.csr_matrix
类,并替换其他一些用于个人用途。我正在创建一个继承自csr_matrix
的子类,如下:
class SparseMatrix(sp.csr_matrix):
def __init__(self, matrix):
super(type(self), self).__init__(matrix)
但这不会起作用,抛出:
AttributeError:找不到toSpa
你能否向我解释一下我做错了什么?
答案 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_mymatrix
,csr_test
之类的其他名称等等......