【发布时间】:2020-09-13 05:10:03
【问题描述】:
[注意:虽然已经有一些关于在 numpy 中处理大型矩阵的帖子,但它们并没有解决我的具体问题。]
我正在尝试使用numpy.loadtxt() 加载存储在大小为 1.02G 的 .txt 文件中的 30820x12801 矩阵。我收到了Memory error。
这并不奇怪,除了:
- 我使用的是 64 位 Python。
- 我正在为它分配 50G 虚拟内存的超级计算机中运行该作业。
据我所知,1G 矩阵对于 64 位 Python 来说应该不是问题,当然对于 50G 的 RAM 来说也不应该是问题。
(这是我第一次处理大型数据集,所以我可能会遗漏一些基本的东西)。
额外信息:
- 使用 open() 时,文件加载到 Python 中没有任何问题。
-
ulimit -a | grep "max memory size的输出:'(kbytes, -m) 无限制' - 完整的错误信息:
Traceback (most recent call last):
File "jPCA/jPCA_pipeline.py", line 87, in <module>
MATRIX = get_matrix(new_file_prefix, N)
File "jPCA/jPCA_pipeline.py", line 70, in get_matrix
MATRIX = np.loadtxt('{}_N={}.txt'.format(new_file_prefix, N))
File "/home/hers_en/fsimoes/miniconda3/lib/python3.7/site-packages/numpy/lib/npyio.py", line 1159, in loadtxt
for x in read_data(_loadtxt_chunksize):
File "/home/hers_en/fsimoes/miniconda3/lib/python3.7/site-packages/numpy/lib/npyio.py", line 1087, in read_data
items = [conv(val) for (conv, val) in zip(converters, vals)]
File "/home/hers_en/fsimoes/miniconda3/lib/python3.7/site-packages/numpy/lib/npyio.py", line 1087, in <listcomp>
items = [conv(val) for (conv, val) in zip(converters, vals)]
MemoryError
【问题讨论】:
-
不使用 Numpy 时是否可以将文件加载到内存中?
-
文本文件是什么格式的?您将其加载为什么 dtype?你能分享一下实际的错误信息吗?
-
你能粘贴
ulimit -a | grep "max memory size"的输出吗? -
@AdomasBaliuka 请查看我添加的额外信息。
-
还有@AdomasBaliuka
标签: python numpy large-data