我有一个大矩阵,目前处于numpy状态,我希望将其移植到scipy稀疏矩阵,因为保存numpy(2000,2000)矩阵的文本表示超过100mb。
(1)scipy中可用的稀疏矩阵似乎过多[例如,lil_matrix或dok_matrix - 哪一个对于简单的递增是最佳的,并且有效地保存到数据库中?
(2) 我希望能够像这样解决矩阵中的范围:
>> import numpy as np
>> a = np.zeros((1000,1000))
>> a[3:5,4:7] += 1
稀疏矩阵似乎不可能这样做?
答案 0 :(得分:6)
我不能说哪种存储效率最高。这将取决于您的数据。
我可以说,+=
运算符可以工作,只是你不能依赖通常的数组广播规则:
>>> m = sparse.lil_matrix((100,100))
>>> m[50:56,50:56]+=scipy.ones((6,6))
>>> m[50,50] #1.0