我经常处理由于冗长计算而产生的numpy数组。我需要在计算中的其他地方使用它们。我现在'挑选'它们并在需要时将文件解压缩到变量中。
我注意到大数据量(~1M数据点),这很慢。我在别处读到,酸洗不是存储大文件的最佳方式。我想有效地存储和读取它们作为ASCII文件直接加载到一个numpy数组。做这个的最好方式是什么?
说我在变量'a'中有一个100k x 3的二维数组。我想将它存储在ASCII文件中并将其加载到一个numpy数组变量'b'。
答案 0 :(得分:3)
如果你想要效率,那么ASCII不会是这种情况。 pickle的问题在于它依赖于python版本,所以对于长期存储来说这不是一个好主意。您可以尝试使用其他二进制技术,其中最直接的解决方案是使用numpy.save
方法记录here。
答案 1 :(得分:3)
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)
再次加载数据:
with open('data.txt', 'rb') as f:
my_loaded_array = np.load(f)
答案 2 :(得分:2)
您提出的问题与数据集的大小直接相关。
对于这个常见问题,有几种解决方案可以使用专门的库。
h5py的示例。要写数据:
import h5py
with h5py.File('data.h5', 'w') as f:
f.create_dataset('a', data=a)
阅读数据:
import h5py
with h5py.File('data.h5', 'r') as f:
b = f['a'][:]