【发布时间】:2026-02-27 08:55:01
【问题描述】:
我正在从事一个涉及使用大型数据矩阵进行计算的项目。我有 10,000 行和 100 列的 CSV 文件,其中有 10 个。目前,我正在运行一个后台作业,该作业从每个 CSV 读取数据,将其拉入一个数组,对数据运行一些矩阵乘法计算,然后移动到下一个 CSV。我确信有更好的方法来做到这一点,因为处理工作所需的大部分时间似乎都花在了打开 CSV 上。我的问题实际上归结为我应该如何存储当前在这些 CSV 文件中的数据,以便轻松访问它并以更有效的方式运行计算。任何帮助将不胜感激
编辑
根据 cmets 的建议,我想补充一点,矩阵密度是 100%,数字都是浮点数。
【问题讨论】:
-
您的 CSV 文件有多大(以 MB 为单位,而不是行/列)。
-
是否所有单元格值都在 CSV 数字中?
-
您是否考虑将非零值存储在数据库中,每条记录为
row, col, value?对矩阵进行操作,你看过Matrix class吗?还有一些矩阵运算的gem,比如NMatrix。 -
每个 CSV 文件大约 12 mb。这些值都是数字。
-
对于矩阵运算,我使用的是 Matrix 类。效果很好。我想存储在数据库中是一种选择,尽管在 Heroku 上可能需要昂贵的数据库计划,因为这需要数百万行。