Gibt es eine schnelle, effiziente Möglichkeit, die Zeile in jeder Spalte eines NxM Numpy-Arrays zu finden, die den höchsten Wert hat?Zeilenindex von max. Spaltenwerten in einer nuepy-Matrix finden
Ich mache das derzeit über eine verschachtelte Schleife in Python, die relativ langsam ist:
from PIL import Image
import numpy as np
img = Image.open('sample.jpg').convert('L')
width, height = size = img.size
y = np.asarray(img.getdata(), dtype=np.float64).reshape((height, width))
max_rows = [0]*width
for col_i in xrange(y.shape[1]):
max_vaue, max_row = max([(y[row_i][col_i], row_i) for row_i in xrange(y.shape[0])])
max_rows[col_i] = max_row
Für ein 640x480 Bild, das dauert etwa 5 Sekunden. Nicht große, aber komplexere Bildoperationen, wie Unschärfen, die vollständig in Numpy/PIL/C implementiert sind, benötigen 0,01 Sekunden oder weniger. Dies ist eine Operation, die ich in einem Videostream ausführen möchte. Es handelt sich also um einen großen Engpass. Wie beschleunige ich das, ohne meine eigene C-Erweiterung zu schreiben?