Могу ли я что-нибудь сделать, чтобы ускорить маскированные массивы в 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)