我有一个以坐标格式存储在磁盘上的稀疏矩阵(三元组格式) . 我想使用 scipy.sparse
将矩阵的块读入内存,但是,在执行此操作时,scipy将始终采用从 0,0
开始的密集矩阵索引,而不管块是什么 . 这意味着,例如,对于稀疏矩阵中的最后一个'chunk',scipy将被解释为一个巨大的矩阵,在右下角只有一些值 .
如何才能正确处理块,以便在创建密集矩阵时只创建与该块相对应的子集?
这样做的原因是,即使稀疏,矩阵对于内存来说太大(大约6亿32位浮点值)并且在屏幕上显示(因为矩阵代表地理空间栅格)我需要将其转换为密集矩阵以地理空间格式存储(例如geotiff) .
1 回答
在构建子集时,您应该能够调整
row
和col
值 . 例如:要使用行的子集构建矩阵,请使用:
您必须决定是否要为
M1
指定形状,或者让它从row
和col
的范围中推断出来 .如果没有对这些坐标进行排序,或者您还希望采用
col
的子范围,事情可能会变得更加复杂 . 但我认为这 grab 了基本的想法 .