Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中持久存储和高效访问非常大的2D列表?_Python_Database_Storage - Fatal编程技术网

如何在Python中持久存储和高效访问非常大的2D列表?

如何在Python中持久存储和高效访问非常大的2D列表?,python,database,storage,Python,Database,Storage,在Python中,我正在读取一个非常大的2D数据网格,该网格总共包含大约200000000个数据点。每个数据点是由3个浮点组成的元组。将所有这些数据读入二维列表通常会导致内存错误。为了避免这个内存错误,我希望能够将这些数据读入硬盘上的某种表格中,当给定一个网格坐标时,可以有效地访问这些表格,即harddrive_table.get(300,42) 到目前为止,在我的研究中,我遇到了HDF5的一个实现,看起来有些过分,还有内置的库,它使用类似字典的方法访问保存的数据,但关键点必须是字符串,而将数亿

在Python中,我正在读取一个非常大的2D数据网格,该网格总共包含大约200000000个数据点。每个数据点是由3个浮点组成的元组。将所有这些数据读入二维列表通常会导致内存错误。为了避免这个内存错误,我希望能够将这些数据读入硬盘上的某种表格中,当给定一个网格坐标时,可以有效地访问这些表格,即harddrive_table.get(300,42)

到目前为止,在我的研究中,我遇到了HDF5的一个实现,看起来有些过分,还有内置的库,它使用类似字典的方法访问保存的数据,但关键点必须是字符串,而将数亿个网格坐标转换为字符串存储的性能可能会对我的使用造成太大的性能影响

是否有任何库允许我在硬盘上存储一个2D数据表,并对单个数据点进行有效访问

这个数据表只在程序运行时才需要,所以我不关心它的互操作性,也不关心它如何将数据存储在硬盘上,因为它将在程序运行后被删除

  • 如果HDF5能正常工作,那它就不是真正的杀伤力过大了。除了PyTables之外,还有一些更简单的

  • Numpy允许您将文件直接导入Numpy数组。这些值将以最小开销的方式存储在磁盘文件中,numpy数组形状提供数组索引和文件偏移之间的映射。mmap使用相同的底层操作系统机制,驱动磁盘缓存将磁盘文件映射到虚拟内存中,这意味着如果内存允许,可以将整个内容加载到RAM中,但如果部分内容不能同时装入磁盘,则可以将其刷新到磁盘中(并在以后需要时重新加载)


  • 看,你尝过辣的吗?我使用的是60000 X 60000矩阵,我所做的是将每一行保存为一个Spicle.稀疏的列表。此外,考虑使用GCP(谷歌云平台),你有免费试用(CC需要),但有一些强大的计算机大数据集(AI笔记本电脑)