Есть ли что-нибудь, что я могу сделать, чтобы ускорить маскированные массивы в numpy?У меня была ужасно неэффективная функция, которую я переписал для использования замаскированных массивов (где я мог просто маскировать строки вместо того, чтобы делать копии и удалять строки, как я делал).Однако я был шокирован, обнаружив, что замаскированная функция была в 10 раз медленнее, потому что замаскированные массивы намного медленнее.
В качестве примера возьмем следующее (замаскированное для меня более чем в 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)