[注:尽管已经有一些帖子涉及numpy中的大型矩阵,但它们并没有解决我的具体问题。]
我试图加载一个30820x12801矩阵,该矩阵存储在一个大小为1.02G的.txt文件中,带有numpy.loadtxt()
。我得到一个Memory error
这并不奇怪,除非:
据我所知,1G矩阵对于64位Python来说不应该是个问题,当然对于50G RAM来说也不应该是个问题
(这是我第一次处理大型数据集,所以我可能缺少一些基本的东西)
额外资料:
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
事实证明,使用50G虚拟内存就足够了:事实证明,我的作业以前只使用10G(毕竟不是200G,我在提交作业时遇到了一些问题)。在我解决这个问题后,50克就足够了,但它仍然需要大约6个小时才能运行
这仍然让我感到惊讶,因为我认为10G足以导入1G矩阵,但从评论来看,这与loadtxt的工作方式有关
相关问题 更多 >
编程相关推荐