有什麼我可以做的,以加快numpy中的屏蔽數組?我有一個非常低效的函數,我重寫了使用被屏蔽的數組(我可以屏蔽行而不是複製和刪除行)。但是,我驚訝地發現掩碼函數速度慢了10倍,因爲掩碼陣列速度非常慢。Python/Numpy - 屏蔽數組非常慢
作爲一個例子,可採取下列(掩蔽是對我來說更慢然後6次):
import timeit
import numpy as np
import numpy.ma as ma
def test(row):
return row[0] + row[1]
a = np.arange(1000).reshape(500, 2)
t = timeit.Timer('np.apply_along_axis(test, 1, a)','from __main__ import test, a, np')
print round(t.timeit(100), 6)
b = ma.array(a)
t = timeit.Timer('ma.apply_along_axis(test, 1, b)','from __main__ import test, b, ma')
print round(t.timeit(100), 6)
請記住,MaskedArrays比實際解決方案更方便。如果您需要對數組中缺失/未定義值進行密集計算,那麼在大多數情況下,您最好自己處理掩碼和數據。直到在NumPy代碼中更好地實現丟失/未定義的值(這種情況應該很快發生)之前,您將被禁止使用MaskedArrays。是的,它們很慢,因爲它們是用純Python編碼的,當然不能像依賴某些C代碼那樣高效。 – 2012-08-17 11:46:38
感謝您的問題,這證實了我懷疑我的代碼 – 2017-08-29 10:11:50