Python - 超大矩阵的最佳数据结构

3 投票
3 回答
2053 浏览
提问于 2025-04-16 14:13

我需要创建大约200万个向量,每个向量有1000个位置(每个位置只存一个整数)。

对于处理这么多数据,最合适的数据结构是什么呢?我可能对处理和内存的需求估计得有点高。

我需要遍历一堆文件(总共大约34.5GB),每当在某一行遇到200万个项目中的一个(每个项目对应一个向量)时,就更新这些向量。

我可以很容易地写出代码来实现这个,但我知道这样做可能不够优化,无法处理这么大的数据量,所以我才来请教你们这些专家。:)

最好的,

乔治娜

3 个回答

1

使用稀疏矩阵,假设大部分的数值都是0。

1

如果你需要在内存中处理数据,可以试试 scipy.sparse 矩阵 这种类型。它里面有一些算法,可以高效地处理稀疏矩阵。

5

你可能在使用的机器上遇到了内存不足的问题。如果不清理正在运行的程序:

a = numpy.zeros((1000000,1000),dtype=int)

就会导致数据无法完全放进内存。不过,通常来说,如果你能把问题拆分开,这样就不需要一次性把整个数组都放进内存,或者你可以使用稀疏表示法,那我建议你使用 numpy (对于稀疏表示可以用 scipy)。

另外,你也可以考虑使用 hdf5 格式,通过 h5pypytables,或者用 netcdf4netcdf4-python 来把数据存储在硬盘上,然后只访问你需要的部分。

撰写回答