写numpy数组的ascii输出

时间:2013-02-11 09:18:53

标签: python numpy io ascii

我想在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中,这似乎有点快,但我仍然不满意输出速度。

非常欢迎任何建议。

2 个答案:

答案 0 :(得分:4)

你试过吗

random = np.vstack((random1, random2, random3)).T
random.savetxt("output.dat", delimiter="\t")

答案 1 :(得分:0)

我猜测磁盘io是你正在进行的最昂贵的操作..你可以尝试创建自己的缓冲区来处理这个问题,而不是每个循环缓冲区写入每一行说100行并将它们写在一个大块中。然后试验一下,看看最有用的缓冲区大小是什么