在Scipy稀疏矩阵中处理范围
我有一个很大的矩阵,现在是用numpy做的,但我想把它转换成scipy的稀疏矩阵,因为保存这个2000x2000的numpy矩阵的文本表示超过了100MB。
(1) 在scipy中有很多种稀疏矩阵可供选择,比如lil_matrix和dok_matrix,那么哪种更适合简单的增量操作,并且在保存到数据库时更高效呢?
(2) 我希望能像这样访问矩阵中的某些范围:
>> import numpy as np
>> a = np.zeros((1000,1000))
>> a[3:5,4:7] += 1
看起来稀疏矩阵好像不支持这样做?
1 个回答
6
我不能确定哪种存储方式最有效,这要看你的数据类型。
不过我可以告诉你,+=
这个操作符是可以用的,只是你不能像平常那样依赖数组的广播规则:
>>> m = sparse.lil_matrix((100,100))
>>> m[50:56,50:56]+=scipy.ones((6,6))
>>> m[50,50] #1.0