我想了解resize()
函数对numpy
数组与anh5py dataset
的影响。在我的应用程序中,我逐行读取一个文本文件,然后在分析数据之后,写入一个hdf5
文件。有什么好的方法来实现这一点呢。是否应该将每个新行添加到numpy
数组中,并继续为NUPY数组调整大小(增加轴)(最终将完整的NUMPY数组写入H5Py数据集),还是应该直接将每个新行数据添加到h5py dataset
中,从而在内存中调整h5py dataset
的大小。如果我们在每一行之后继续调整大小,resize()
函数如何影响性能?还是应该每100或1000行调整一次大小?
每个数据集中大约有200000行。
如有任何帮助,我们将不胜感激。
最佳答案
我认为resize()将复制数组中的所有数据,如果您重复调用它会很慢。
如果要连续地将数据追加到数组中,可以先创建一个大数组,然后使用索引将数据复制到该数组中。
或者可以使用array模块中的array对象,它是一个动态数组,其行为类似于list。将所有数据追加到array对象后,可以将其转换为ndarray。下面是一个例子:
import array
import numpy as np
a = array.array("d")
a.extend([0,1,2])
a.extend([3,4,5])
b = np.frombuffer(a, np.float).reshape(-1, 3)