我發現numpy數組的astype()方法效率不高。我有一個包含 300萬Uint8點的數組。將它乘以3x3矩陣需要2秒,但將uint16的結果轉換爲uint8需要另一秒。numpy:如何快速轉換數組類型
更確切地說:
print time.clock()
imgarray = np.dot(imgarray, M)/255
print time.clock()
imgarray = imgarray.clip(0, 255)
print time.clock()
imgarray = imgarray.astype('B')
print time.clock()
點積和縮放需要2秒
剪取需要200毫秒 類型轉換需要1秒
鑑於其它操作所用的時間,我希望astype
要更快。 有沒有更快的方法來做類型轉換,或者當我猜測類型轉換不應該那麼困難時我錯了嗎?
編輯:我們的目標是最終的8位陣列保存到一個文件
爲什麼你需要去UINT16和回來?是否可以將'M'作爲uint8矩陣,那麼你不需要轉換。 – u0b34a0f6ae 2009-12-11 15:49:53
點積的結果將超出uint8範圍。我最初使用的是浮點M矩陣,並認爲去整數會給我一些改進,但事實並非如此。 – shodanex 2009-12-11 16:02:48
什麼需要所有的時間,可能是訪問所有的內存位置。聽起來很難解決。 – 2009-12-11 16:22:55