import pandas
import numpy as np
a = np.ones((43200, 4000)) # Not recommended.
x = pandas.HDFStore("some_file.hdf")
x.append("a", pandas.DataFrame(a)) # <-- This will take a while.
x.close()
# Then later on...
my_data = pandas.HDFStore("some_file.hdf") # might also take a while
usable_a_copy = my_data["a"] # Be careful of the way changes to
# `usable_a_copy` affect the saved data.
copy_as_nparray = usable_a_copy.values
您可以使用PyTables创建分层数据格式(HDF)文件来存储数据。这提供了一些有趣的内存选项,可以将正在处理的对象链接到其中保存的文件。
下面是另一个StackOverflow问题,演示如何执行此操作:"How to store a NumPy multidimensional array in PyTables."
如果您愿意将数组用作Pandas数据帧对象,还可以使用PyTables/HDF5的Pandas接口,例如:
对于这种大小的文件,您可以考虑是否可以使用并行算法执行应用程序,并且可能只应用于大型数组的子集,而不需要在继续之前使用所有数组。
将数据保存到文本文件是非常低效的。Numpy内置了保存命令save和savez/savez_compressed,这两个命令更适合存储大型数组。
根据您计划如何使用数据,还应该研究HDF5格式(h5py或pytables),它允许您存储大型数据集,而无需将其全部加载到内存中。
相关问题 更多 >
编程相关推荐