4
我有一个3000x300矩阵文件(float)。当我读取并转换为浮点数时,我得到了float64,这是python中的默认值。我尝试了numpy和map()将它转换为float32(),但它们看起来效率很低。将字符串列表有效地转换为float32
我的代码:采取
x = open(readFrom, 'r').readlines()
y = [[float(i) for i in s.split()] for s in x]
时间:0:00:00.996000
numpy的实现:采取
x = open(readFrom, 'r').readlines()
y = [[np.float32(i) for i in s.split()] for s in x]
时间:0:00:06.093000
地图()
采取x = open(readFrom, 'r').readlines()
y = [map(np.float32, s.split()) for s in x]
时间:0:00:05.474000
我怎么能转换为非常有效地FLOAT32?
谢谢。
Update:
numpy.loadtxt()
或numpy.genfromtxt()
不适合大文件的工作(给内存错误)。我发布了一个与此相关的问题,我在这里介绍的方法适用于巨大的矩阵文件(50,000x5000)。 here is the question
感谢@mgilson,如果我没有发现任何其他有效的方法。我需要解决这个问题。 – Maggie 2012-07-17 18:11:08
3000×300矩阵文件需要的时间是'0:00:05.885000' – Maggie 2012-07-17 18:16:47
@Mahin - 如果使用map(float,line.split())而不是map(np.float32,line.split ))'?你实际上可能会看到性能提升(从“向量化”演员阵容从“double”到“float”)... – mgilson 2012-07-17 18:59:49