我有一個程序需要將許多大型一維numpy浮點數組轉換爲分隔字符串。我發現這個操作相對於我的程序中的數學運算相當緩慢,我想知道是否有辦法加速它。例如,考慮以下循環,該循環在numpy數組中使用100,000個隨機數,並將每個數組連接到逗號分隔的字符串中。從1D numpy數組生成分隔字符串的最快方法
import numpy as np
x = np.random.randn(100000)
for i in range(100):
",".join(map(str, x))
該循環大約需要20秒才能完成(總數,而不是每個循環)。相反,考慮像元素乘法(x * x)這樣的100個週期將花費超過1/10秒的時間來完成。顯然,字符串連接操作會造成很大的性能瓶頸;在我的實際應用中,它將主宰整個運行時間。這讓我想知道,有沒有比「,」更快的方法。join(map(str,x))?由於map()是幾乎所有處理時間發生的地方,這就涉及到是否有更快的方式將大量數字轉換爲字符串。
它是數以字符串所花費的時間的轉換? – Mark 2010-04-27 13:25:35
將兩個整數相乘並轉換/連接100,000個數字是完全不同的事情 - 您怎麼能期望這兩個操作甚至在性能方面處於同一個球場? – 2010-04-27 13:28:00
馬克 - 是的。蒂姆 - 真的。我的觀點是,字符串操作會造成一個真正的瓶頸,如果有辦法加快速度,這將是很好的。 – Abiel 2010-04-27 13:43:36