1

我想将一些随机数写入 ascii 输出文件。我用numpy生成数字,所以数字存储在numpy.array

import numpy as np
random1=np.random.uniform(-1.2,1.2,7e6)
random2=...
random3=...

所有三个数组的大小相同。我使用标准文件输出,但这真的很慢。每 30 分钟大约 8000 行。这可能是因为我循环了三个大数组。

fout1 = open("output.dat","w")

for i in range(len(random1)):
  fout1.write(str(random1[i])+"\t"+ str(random2[i])+"\t"+ str(random3[i])+"\n")
fout1.close()

我也只是使用print str(random1[i])+"\t"+ str(random2[i])+"\t"+ str(random3[i])并转储了文件中的所有内容./myprog.py > output.dat这似乎有点快,但我仍然对输出速度不满意。

任何建议都非常受欢迎。

4

2 回答 2

4

你有没有尝试过

random = np.vstack((random1, random2, random3)).T
random.savetxt("output.dat", delimiter="\t")
于 2013-02-11T09:26:12.103 回答
0

我猜磁盘 io 是你正在做的最昂贵的操作。你可以尝试创建自己的缓冲区来处理这个问题,而不是把每个循环缓冲区的每一行都写成 100 行并将它们写在一个大块中。然后对此进行试验,看看最有益的缓冲区大小是多少

于 2013-02-11T09:24:59.630 回答