我有一个defaultdict
,它存储数据集中每2个单词的数据共生。我已经完成了这个操作系统以获得稀疏表示,因为数据集中不存在每对,因此节省了一些内存空间。
现在有一些标准函数可以将此defaultdict
转换为numpy
矩阵,如果可能的话,可以转换为某些稀疏表示。我知道如何将dict转换为numpy数组。但我正在寻找一种更有效的方法将defaultdict转换为矩阵。
如果不可能有任何将defaultdict转换为CSV的标准函数,那么我可以使用numpy加载csv。
编辑 - 我找到了使用pandas的解决方法。我将defaultdict转换为DataFrame,然后将DF转换为numpy矩阵。有没有比这更好的方法?
但遗憾的是,这对挽救记忆没有帮助。
答案 0 :(得分:1)
假设您的数据如下所示:
data = defaultdict(int)
data[0,0] = 10
data[1,1] = 100
items = list(data.items()) # list only needed for python3
vs = [v for (i,j), v in items]
ii = [i for (i,j), v in items]
j j= [j for (i,j), v in items]
matrix = scipy.sparse.coo_matrix((vs, (ii, jj))
这给出了一些奇怪的输出:
>>> print matrix
(0, 0) 10
(1, 1) 100
但是你可以将这个对象看作是一个密集的矩阵