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