1GB矩阵、64位Python和RAM加载的Numpy内存错误

2024-09-24 02:19:50 发布

您现在位置:Python中文网/ 问答频道 /正文

[注:尽管已经有一些帖子涉及numpy中的大型矩阵,但它们并没有解决我的具体问题。]

我试图加载一个30820x12801矩阵,该矩阵存储在一个大小为1.02G的.txt文件中,带有numpy.loadtxt()。我得到一个Memory error

这并不奇怪,除非:

  1. 我正在使用64位Python
  2. 我在一台超级计算机上运行这个任务,为它分配了50克的虚拟内存

据我所知,1G矩阵对于64位Python来说不应该是个问题,当然对于50G RAM来说也不应该是个问题

(这是我第一次处理大型数据集,所以我可能缺少一些基本的东西)


额外资料:

  • 使用open()时,文件将毫无问题地加载到Python中
  • {}的输出:'(千字节,-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


Tags: inpynumpyhomelibline矩阵val
1条回答
网友
1楼 · 发布于 2024-09-24 02:19:50

事实证明,使用50G虚拟内存就足够了:事实证明,我的作业以前只使用10G(毕竟不是200G,我在提交作业时遇到了一些问题)。在我解决这个问题后,50克就足够了,但它仍然需要大约6个小时才能运行

这仍然让我感到惊讶,因为我认为10G足以导入1G矩阵,但从评论来看,这与loadtxt的工作方式有关

相关问题 更多 >