将浮点数组保存为ascii

问题描述 投票:0回答:1

我需要将一个 500e6 长的浮点数组转换为 ascii 文件。循环执行此操作需要很长时间。我想知道是否有一种快速的方法可以做到这一点。

我使用了标准循环:NumSamples 为 200e6; dataword 是 200e6 个值的向量。

NumSamples=len(dataword)
for i in range(1,NumSamples):
    MyAscii=str(dataword[i])+"\n"
    fout.write(MyAscii) 

Python 作为语言

python data-conversion
1个回答
1
投票

尝试批量写入,这样就不会每 4 个字节调用

fout.write

from itertools import batched
BATCH_SIZE = 1000
samples = iter(dataword)
# Skip first entry, like in the original code.
next(samples)
for batch in batched(samples, BATCH_SIZE):
    # Join 'BATCH_SIZE' floats in one string before writing it to file.
    MyAscii='\n'.join(str(sample) for sample in batch)
    fout.write(MyAscii) 

这只会每 1000 个浮点数调用

fout.write
一次,代价是在内存中存储 1000 个浮点数的字符串(可以忽略不计)。根据经验,请使用您可以获得的最大的
BATCH_SIZE
,而不会耗尽内存。

© www.soinside.com 2019 - 2024. All rights reserved.