我目前正在尝试制作一个非常大的矩阵,我不确定如何以一种内存高效的方式这样做。在
我试着用numpy,它对我的小箱子(2750086X300)很管用 然而,我有一个更大的,2750086X1000,它太大了,我无法运行。在
我想用int来创建它,但是我会给它添加浮点值,所以不确定cld如何影响它。在
我试着找到一些关于制作一个稀疏的零填充数组的东西,但是cldnt在这里或其他地方找到了任何好的主题/问题/建议。在
有什么好建议吗?我目前正在使用python,所以我在寻找python的解决方案,但是我愿意尝试其他语言。在
泰铢
编辑:
谢谢你的建议,我试过了scipy.sparse.csr_矩阵设法创造了一个深度增加的矩阵。在
我正在做的是:
matrix = scipy.sparse.csr_matrix((df.shape[0], 300))
## matrix = np.zeros((df.shape[0],
for i, q in enumerate(df['column'].values):
matrix[i, :] = function(q)
其中function相当于该行上的向量运算函数。在
现在,如果我在np.零,很容易做到,大约10分钟。在
现在,如果我尝试对scipy稀疏矩阵做同样的操作,大约需要50个小时。这不太合理。在
有什么建议吗?在
编辑2:
在scipy.sparse.lil峎矩阵成功了
循环大约需要20分钟,使用的内存比np.零在
泰铢。在
编辑3:
仍然是昂贵的内存。决定不在矩阵上存储数据。一次处理1行。从中获取相关值/度量值,将值存储在原始数据框中,然后重新运行。在
尝试scipy.sparse.csr_matrix:
那么
^{pr2}$a
是例如,如果您这样做:
你会得到:
另一个选择是使用scipy.sparse.lil_matrix
对于设置元素(如
a[1,1]=2
),这似乎更有效。在相关问题 更多 >
编程相关推荐