Python 正在加载对RAM来说太大的.npy文件

Python 正在加载对RAM来说太大的.npy文件,python,dataframe,numpy,google-colaboratory,ram,Python,Dataframe,Numpy,Google Colaboratory,Ram,我正试图将一个大的.npy文件(~800 MB)加载到Google Collab中,但每次我尝试加载时,Collab实例都会由于RAM过度使用而崩溃 import numpy as np a=np.load('oddata.npy',allow_pickle=True) 我正在使用带有12GB RAM的基本Collab实例 我尝试过使用mmap,但它返回以下错误:ValueError:Array不能被内存映射:dtype中的Python对象 问题是否存在,比如将.npy文件

我正试图将一个大的.npy文件(~800 MB)加载到Google Collab中,但每次我尝试加载时,Collab实例都会由于RAM过度使用而崩溃

     import numpy as np
     a=np.load('oddata.npy',allow_pickle=True)
我正在使用带有12GB RAM的基本Collab实例

我尝试过使用mmap,但它返回以下错误:ValueError:Array不能被内存映射:dtype中的Python对象

问题是否存在,比如将.npy文件分成块或将其转换为另一种文件格式

最好的


Araf

我认为你的问题不仅仅是内存不足。在Collab实例中分配的12GB应该足以读取800MB的文件。为了证实这一点,我在我的Raspberry Pi(只有4GB内存)上运行了一个简单的测试。它可以创建一个1GB.npy文件,并将其读回一个新数组。代码如下:

import numpy as np
nimg, n0, n1 = 1000, 512, 512
arr = np.arange(nimg*n0*n1).reshape(nimg,n0,n1)
print(arr.dtype, arr.shape)

np.save('SO_67671598.npy',arr)
arr2 = np.load('SO_67671598.npy')    
print(arr2.dtype, arr2.shape)

无论是否使用
allow\u pickle=True
参数,我都会得到相同的结果。请注意,不建议使用
allow\u pickle=True
(出于安全原因)。加载对象数组时,这是必需的。我建议您在Collab实例中运行此测试,看看您得到了什么。

HDF5支持按块读取文件。您可以尝试将文件转换为HDF5,但至少需要能够在进行转换的计算机上打开它。例如,您可以在交换内存相当大的机器上执行此操作。但是请注意,HDF5将不接受纯Python对象,我认为这是您的主要问题。为什么不使用本机类型?非常感谢您的快速响应。问题是这是一个预制的数据集,所以我没有机会创建任何本机类型。先生,我尝试了您建议的测试,并且能够在我的Collab实例上运行它,没有任何问题。此时,我怀疑我的数据文件很可能已损坏。我将尝试从文件加载脚本重新创建.npy文件。非常感谢您抽出时间!