我目前正在尝试制作一个非常大的矩阵,我不确定如何以高效的内存方式进行。
我试图使用 numpy,它适用于我的小机箱 (2750086X300) 但是,我得到了一个更大的 2750086X1000,它对我来说太大了,无法运行。
我想用整数来制作它,但我会向它添加浮点值,所以不确定 cld 会如何影响它。
我试图找到一些关于制作稀疏零填充数组的东西,但 cldnt 在这里或其他地方找不到任何很好的主题/问题/建议。
有人有什么好的建议吗?我目前正在使用 python,所以我正在寻找一个 pythonic 解决方案,但我愿意尝试其他语言。
谢谢
编辑:
谢谢你的建议,我试过 scipy.sparse.csr_matrix 它设法创建了一个矩阵,但大大增加了通过它的时间。
这是我正在做的事情:
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)
Run Code Online (Sandbox Code Playgroud)
其中函数几乎是该行上的向量运算函数。
现在,如果我在 np.zeros 上进行循环,它会很容易完成,大约 10 分钟。
现在,如果我尝试对 scipy 稀疏矩阵做同样的事情,大约需要 50 个小时。这不是那么合理。
有什么建议吗?
编辑2:
scipy.sparse.lil_matrix 做到了
循环需要大约 20 分钟,并且使用的内存比 np.zeros 少
谢谢。
编辑3:
还是内存贵。决定不在矩阵上存储数据。一次处理 1 行。从中获取相关值/指标,将值存储在原始 df 中,再次运行。