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