gpt4 book ai didi

python - 在 python 中读取/写入 ASCII 文件的最快/最优化的方法

转载 作者:行者123 更新时间:2023-11-30 22:46:26 25 4
gpt4 key购买 nike

让我更新我的问题,我有一个 ascii 文件(7G),大约有 100M 行。我使用以下方式读取此文件:

f=np.loadtxt(os.path.join(dir,myfile),delimiter=None,skiprows=0) 

x=f[:,1]
y=f[:,2]
z=f[:,3]
id=f[:,0]

稍后我将需要 x、y、z 和 id 数组进行插值。问题是读取文件大约需要 80 分钟,而插值只需要 15 分钟。

我尝试使用 python memory_profiler 模块获取脚本每一行使用的内存增量。

以下行读取整个 7.4 GB 文件,将内存使用量增加 3206.898 MiB (3.36 GB)。第一个问题是为什么它不增加 7.4 GB 的内存使用量?

f=np.loadtxt(os.path.join(dir,myfile),delimiter=None,skiprows=0) 

以下 4 行根本不增加内存。

x=f[:,1] 
y=f[:,2]
z=f[:,3]
id=f[:,0]

最后,如果您能推荐我在 python 中读取/写入文件的最优化方法是什么,我仍然会很感激? numpy np.loadtxt 和 np.savetxt 是最好的吗?

提前致谢,

最佳答案

将数字数据写入文件的最佳方法是不将其写入 ASCII 文件。

<小时/>

运行一次,以二进制形式存储数据 np.save (本质上与pickle相同):

np_file = os.path.splitext(myfile)[0] + '.npy'
data = np.loadtxt(os.path.join(dir,myfile),delimiter=None,skiprows=0)
np.save(os.path.join(dir, np_file), data)

然后您可以在下次加载它:

data = np.load(os.path.join(dir, np_file))

关于python - 在 python 中读取/写入 ASCII 文件的最快/最优化的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40868231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com