Gibt es etwas, das ich tun kann, um maskierte Arrays in Numpy zu beschleunigen? Ich hatte eine schrecklich ineffiziente Funktion, die ich neu geschrieben habe, um maskierte Arrays zu verwenden (wo ich nur Zeilen maskieren konnte, anstatt Kopien zu erstellen und Zeilen zu löschen, wie ich es tat). Ich war jedoch schockiert, als ich feststellte, dass die maskierte Funktion 10x langsamer war, weil die maskierten Arrays so viel langsamer sind.
Nehmen wir als Beispiel das Folgende (maskiert ist für mich mehr als 6 Mal langsamer):
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)