2016-07-20 9 views
0

Ich habe ein Bild der Größe M * N, deren Pixelkoordinaten nach einer raumfüllenden Kurve zu einem 1D-Array abgeflacht wurden (d. H. Nicht eine klassische Rasterung, bei der ich die Umformung hätte verwenden können).Umformen von abgeflachten Indizes in Python

Ich verarbeite so meine 1D-Array (abgeflachtes Bild) und ich möchte es dann zu einem M * N-Array (Anfangsgröße) umformen.

Bisher Ich habe dies for-Schleife mit einem getan:

for i in range(img_flat.size): 
    img_res[x[i], y[i]] = img_flat[i] 

x und y die X- und Y-Pixel-Koordinaten entsprechend meiner Pfadabtastung zu sein.

Ich frage mich jedoch, wie man das in einer einzigartigen Codezeile macht.

Antwort

1

Wenn x und y sind numpy Arrays der Dimension 1 und Längen n und img_flat hat auch Länge nimg_res ist ein numpy Array der Dimension 2 (h, w) so dass ` h * w = n, dann gilt:

img_res[x, y] = img_flat 

sollte ausreichen

+0

Ja, es ist noch einfacher als meine zweite Lösung! Ich vergesse diesen Tipp immer! – floflo29

0

In der Tat war es einfach:

vec = np.arange(0, seg.size, dtype=np.uint) 
img_res[x[vec], y[vec]] = seg[vec]