wake-up-neo.net

Numpy entfernen Sie eine Dimension aus dem NP-Array

Ich habe einige Bilder, mit denen ich arbeiten möchte, das Problem ist, dass es zwei Arten von Bildern gibt, beide sind 106 x 106 Pixel, einige sind in Farbe und einige sind schwarz und weiß. 

eine mit nur zwei (2) Dimensionen:

(106,106)

und eins mit drei (3)

(106,106,3)

Gibt es eine Möglichkeit, diese letzte Dimension zu entfernen?

Ich habe np.delete ausprobiert, aber es schien nicht zu funktionieren.

np.shape(np.delete(Xtrain[0], [2] , 2))
Out[67]: (106, 106, 2)
16
Kevin

Sie können die fantastische Indexierung von Numpy verwenden (eine Erweiterung der integrierten Slice-Notation von Python):

x = np.zeros( (106, 106, 3) )
result = x[:, :, 0]
print(result.shape)

druckt

(106, 106)

Eine Form von (106, 106, 3) bedeutet, dass Sie 3 Sätze von Objekten haben, die die Form (106, 106) haben. Um die letzte Dimension zu "streifen", müssen Sie nur eine davon auswählen (das ist das, was die ausgefallene Indizierung tut).

Sie können jedes gewünschte Stück behalten. Ich wähle willkürlich die 0., da Sie nicht angegeben haben, was Sie wollten. result = x[:, :, 1] und result = x[:, :, 2] würden also auch die gewünschte Form ergeben: Es kommt nur darauf an, welches Slice Sie behalten müssen. 

34

Nehmen Sie einfach den Mittelwert über die Farbdimension (axis=2):

Xtrain_monochrome = Xtrain.mean(axis=2)
1
Dmitry Mottl

Wenn die Form Ihres Arrays (106, 106, 3) ist, können Sie es als eine Tabelle mit 106 Zeilen und 106 Spalten anzeigen, die mit Datenpunkten gefüllt sind, wobei jeder Punkt array of 3 numbers ist, den wir als [x, y ,z] darstellen können. Wenn Sie also die Dimensionen (106, 106) abrufen möchten, müssen Sie die Datenpunkte in Ihrer Tabelle als Arrays definieren, die keine einzelnen Zahlen sind. Sie können dies erreichen, indem Sie entweder die x-Komponente, die y-Komponente oder die z-Komponente jedes Datenpunkts extrahieren oder indem Sie eine Funktion anwenden, die die drei Komponenten irgendwie zusammenfasst, z. B. das Mittel, die Summe, das Maximum usw. Sie können jede Komponente wie @matt Messersmith oben extrahieren.

0
Nde Samuel Mbah