我想在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])
并将所有内容转储到文件usind shell ./myprog.py > output.dat
中,这似乎有点快,但我仍然不满意输出速度。
非常欢迎任何建议。
答案 0 :(得分:4)
你试过吗
random = np.vstack((random1, random2, random3)).T
random.savetxt("output.dat", delimiter="\t")
答案 1 :(得分:0)
我猜测磁盘io是你正在进行的最昂贵的操作..你可以尝试创建自己的缓冲区来处理这个问题,而不是每个循环缓冲区写入每一行说100行并将它们写在一个大块中。然后试验一下,看看最有用的缓冲区大小是什么