2016-09-20 3 views
0

sagen, dass ich ein RGB-Bild habe:numpy: auspacken Array entlang einer Achse

from skimage import data 
img = data.astronaut() 
print(img.shape) # (512, 512, 3) 

Gibt es einen prägnanten numpy Befehl es entlang der Farbkanäle zu entpacken:

R, G, B = np.unpack(img, 2) # ? 

Was Ich mache gerade Verständnis verwendet:

R, G, B = (img[:, :, i] for i in range(3)) 

Aber gibt es kein einfacheres Kommando?

Antwort

0

Sie können die Länge-3 Dimension nach vorne transponieren und dann auspacken:

R, G, B = img.transpose((2, 0, 1)) 
+0

Ich werde einige Zeit für jeden anderen geben, um einen Vorschlag zu werfen, aber das ist ziemlich schlau. :) –

0

Alternativ Sie np.split verwenden können:

R, G, B = np.split(img, img.shape[-1], axis=-1) 

Wenn Ihr Array von Form (Höhe, Breite, Kanal) ist, können Sie verwenden np.dsplit zu teilen entlang der Tiefe Dimension:

Verwandte Themen