将deafultdict转换为numpy矩阵或2D Matrix的CSV

时间:2016-05-30 11:07:49

标签: python numpy matrix

我有一个defaultdict,它存储数据集中每2个单词的数据共生。我已经完成了这个操作系统以获得稀疏表示,因为数据集中不存在每对,因此节省了一些内存空间。

现在有一些标准函数可以将此defaultdict转换为numpy矩阵,如果可能的话,可以转换为某些稀疏表示。我知道如何将dict转换为numpy数组。但我正在寻找一种更有效的方法将defaultdict转换为矩阵。

如果不可能有任何将defaultdict转换为CSV的标准函数,那么我可以使用numpy加载csv。

编辑 - 我找到了使用pandas的解决方法。我将defaultdict转换为DataFrame,然后将DF转换为numpy矩阵。有没有比这更好的方法?

但遗憾的是,这对挽救记忆没有帮助。

1 个答案:

答案 0 :(得分:1)

假设您的数据如下所示:

data = defaultdict(int)
data[0,0] = 10
data[1,1] = 100

您想使用scipy.sparse.coo_matrix

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

但是你可以将这个对象看作是一个密集的矩阵