2017-12-07 3 views
0

ich ein numpy.ndarray mit Daten (32x32 Pixel integer Bilder == Arrays)Füllen mehr Teile NumPy Array, da eine Liste von Indizes

Von den Namen der Datei des Bildes füllen Ich möchte wissen, wo In meinem ndarray möchte ich, dass meine Werte gespeichert werden.

Ich möchte meinem NDarray eine Liste aber auch einige Slice (0) geben, weil das Bild in den letzten zwei Dimensionen gespeichert wird. Wie mache ich das?

würde Ich mag so etwas wie

Pesudocode tun:

data=numpy.ndarray(dim1,dim2,dim3,32,32) 
list=function(filename) 

data[list,slice(0),slice(0)]=read_image(filename) 

Ist das möglich?

Meine Liste enthält Einträge, die die Positionen des ndarray [int, int, int] angeben, und mein gelesenes Bild ist ein 32 mal 32 Integer-Array (die letzten beiden Dimensionen meines NDarrays werden ausgefüllt).

+0

Meine Liste hat Einträge, die die Positionen des ndarray [int, int, int] angeben, und mein gelesenes Bild ist ein 32 mal 32 Integer-Array (die letzten beiden Dimensionen von meinem ndarray ausfüllen) – MaxS

Antwort

1

Um diese Zuweisung auszuführen, übergeben Sie ein geeignetes Array in den ersten drei Dimensionen und : (dh den gesamten Indexbereich) in den letzten beiden Dimensionen. Wenn die Liste enthalten ist, beispielsweise

list = [[1, 2, 3], [4, 2, 0], [5, 3, 4], [2, 2, 2]] 

dann das Array als der erste Index passieren ist [1, 4, 5, 2], und zwei andere in ähnlicher Weise für: [2, 2, 3, 2 ] und [3, 0, 4, 2]. Komplettes Beispiel mit gefälschtem (random) Bild:

data = np.zeros((6, 7, 8, 32, 32)) 
list = [[1, 2, 3], [4, 2, 0], [5, 3, 4], [2, 2, 2]] 
image = np.random.uniform(size=(32, 32)) 
ix = np.array(list) 
data[ix[:, 0], ix[:, 1], ix[:, 2], :, :] = image 

ix[:, 0] Hier ist [1, 4, 5, 2], ix[:, 1][2, 2, 3, 2] ist, und so weiter.

Referenz: NumPy indexing und broadcasting.

+0

Danke! In meinem Fall musste ich es ändern, also habe ich eine Liste und nicht eine Liste von Listen, aber abgesehen davon funktionierte es gut! – MaxS

Verwandte Themen