我写了这个非常简单的脚本来为机器学习创建一些随机数据。
from random import randint
f = open('2014-07-17-1M_testdata_1Mx500.cvs', 'w', 50000000) #50MB write buffer
for i in range(1000000): #num rows
for i2 in range(500): #entries per row
f.write(str(randint(0,1000000))) #Return a random integer N such that a <= N <= b.
if(i2 != 499): #entries per row - 1
f.write(",")
f.write("\n")
if(i != 0 and i % 100000 == 0):
print(str(i) + " lines written")
f.close
但是,我注意到一个CPU内核使用100%负载,并且数据创建所需的时间比磁盘速度允许的时间长得多。 要创建大型数据集(100多GB),有没有一种简单的方法可以加快速度?或许一些更快的随机库?
答案 0 :(得分:3)
纯Python是一个艰难的,但幸运的是有高效的Python库可以帮助加快速度。 numpy是一个很好的人:
import numpy
import numpy.random
f = open('2014-07-17-1M_testdata_1Mx500.csv', 'w', 50000000)
for i in range(1000):
m = numpy.random.random_integers(0, 1000000, (1000, 500))
numpy.savetxt(f, m, delimiter=',')
f.close()
在我的MacBook Pro上运行,代码肯定是通过写入磁盘而不是CPU来绑定的, 所以这似乎可以解决问题。