繁体   English   中英

如何保留 SciPy 稀疏矩阵 CSR_Matrix 中的插入顺序?

[英]How to preserve order of insertion in SciPy Sparse Matrix CSR_Matrix?

我想保留插入 SciPy csr_matrix 的顺序,但它似乎总是按行排序,然后索引:

>>> from scipy.sparse import csr_matrix
>>> x = csr_matrix(([1,2,3],[[3,2,1],[5,2,1]]))
>>> print(x)
  (1, 1)    3
  (2, 2)    2
  (3, 5)    1

无论如何要保持原始排序? 我想要的是:

  (3, 5)    1
  (2, 2)    2
  (1, 1)    3

ETA:发现使用data, indices, indptr方法插入会保留行内的顺序(仍然按行排序,但不再按列索引排序)。 而按data, indices插入,索引是二维索引矩阵的索引然后按行和列索引排序。

CSR 格式以行格式存储数据(通过在内存连续数据数组中标记出每一行开始和结束的位置)。 您想要的信息不以该格式存在 - 压缩的一部分是将其删除。

如果您需要该排序信息,您可以将其保留为 COO 格式,但需要注意的是,有些操作会导致 COO 矩阵在没有警告的情况下进行排序。 最好显式地而不是隐式地存储该信息(scipy 稀疏矩阵是否允许您在数据矩阵中使用结构?)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM