2024-04-26 21:49:42 发布
网友
我经常处理numpy数组,这些数组是长时间计算的结果。我需要在其他地方用它们来计算。我现在“pickle”它们,并在需要时将文件解压成变量。在
我注意到对于大数据量(~1M数据点),这是很慢的。我在其他地方读到,酸洗并不是存储大文件的最佳方式。我想将它们作为ASCII文件有效地存储和读取,以便直接加载到numpy数组中。最好的办法是什么?在
假设我在变量'a'中有一个100k×32d数组。我想将它存储在一个ASCII文件中,并将其加载到numpy数组变量'b'中。在
如果你想要效率,ASCII就不是这样了。pickle的问题在于它依赖于python版本,因此对于长期存储来说不是一个好主意。您可以尝试使用其他二进制技术,其中最简单的解决方案是使用文档中的numpy.save方法here。在
numpy.save
Numpy有一个input and output methods的范围,它将完全满足您的需求。在
一个选项是numpy.save:
import numpy as np my_array = np.array([1,2,3,4]) with open('data.txt', 'wb') as f: np.save(f, my_array, allow_pickle=False)
再次加载数据:
您提出的问题与数据集的大小直接相关。在
对于这个非常常见的问题,有几种解决方法,这些方法都是由专门的库提供的。在
h5py的一个例子。写入数据:
import h5py with h5py.File('data.h5', 'w') as f: f.create_dataset('a', data=a)
读取数据:
如果你想要效率,ASCII就不是这样了。pickle的问题在于它依赖于python版本,因此对于长期存储来说不是一个好主意。您可以尝试使用其他二进制技术,其中最简单的解决方案是使用文档中的
numpy.save
方法here。在Numpy有一个input and output methods的范围,它将完全满足您的需求。在
一个选项是
numpy.save
:再次加载数据:
^{pr2}$您提出的问题与数据集的大小直接相关。在
对于这个非常常见的问题,有几种解决方法,这些方法都是由专门的库提供的。在
h5py的一个例子。写入数据:
读取数据:
^{pr2}$相关问题 更多 >
编程相关推荐