假设我有一个来自scipy.sparse的NxN矩阵M(lil_matrix或csr_matrix),我想将其设为(N + 1)xN,其中M_modified [i,j] = M [i,j],0
最佳答案
我认为没有任何办法可以真正避免进行复制。这两种类型的稀疏矩阵都将它们的数据存储为Numpy数组(在csr的data和index属性中以及lil的data和rows属性中)内部存储,并且Numpy数组无法扩展。
更新以获取更多信息:
LIL确实代表LInked List,但是当前的实现并不完全符合该名称。用于data
和rows
的Numpy数组均为对象类型。这些数组中的每个对象实际上都是Python列表(当所有值连续为零时为空列表)。 Python列表不是完全链接的列表,但是由于O(1)查找,它们是很接近的,坦率地说是更好的选择。就个人而言,我没有立即看到在这里使用Numpy对象数组而不只是Python列表的意义。您可以相当容易地将当前的lil实现更改为使用Python列表,这将允许您添加行而不复制整个矩阵。
关于python - 扩展(添加行或列)scipy.sparse矩阵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4695337/