Seite 1 von 1
Wie konvertiere ich ein 3d Array in ein 2d Array?
Verfasst: Montag 12. August 2019, 20:12
von Meinnamegehtdichga
Entschuldigt, dass ich noch einmal frage, aber ich habe leider im Internet nichts hilfreiches zu den Thema gefunden. Ich habe ein 3d Array, mit den shape: (19680, 32, 3)
Da ich es als 3d Array nicht nutzen kann, wollte ich fragen, wie ich dieses array in ein 2d array umwandeln kann.
Dieses Array ist folgendermassen entstanden:
/code
while i < len_path_penguins:
img = load_img("picturesready\\penguin\\" + path_penguins)
Z = img_to_array(img, dtype = int)
print(Z.shape, "w")
Z.astype(int)
if i == 0:
X = Z
y = numpy.append(y, 0)
i = i + 1
print(X.shape)
X = numpy.concatenate((X,Z), axis = 0)
i = i + 1
/code
Dieses Array sieht dann so aus:
[[[ 36 86 113]
[ 41 82 112]
[ 47 69 108]
...
[254 255 251]
[249 255 255]
[244 254 255]]]
Wisst ihr, wie man das machen könnte?
Danke
Re: Wie konvertiere ich ein 3d Array in ein 2d Array?
Verfasst: Montag 12. August 2019, 21:40
von Sirius3
Wieso nimmst Du nicht einfach das, was ich Dir in
DIESEM Thread hier gezeigt habe?
Re: Wie konvertiere ich ein 3d Array in ein 2d Array?
Verfasst: Montag 12. August 2019, 22:09
von Meinnamegehtdichga
Ich habe ein bisschen herumprobiert, und wollte das nicht 1 zu 1 übernehmen, weil ich es ein wenig verstehen wollte. Es funktioniert ja genauso. Der Output ist doch der selbe. Aber in beiden Fällen kommt doch ein 3d Array aus?
Re: Wie konvertiere ich ein 3d Array in ein 2d Array?
Verfasst: Dienstag 13. August 2019, 06:33
von Sirius3
@Meinnamegehtdichga: und was hast Du daran nicht verstanden?
Es gibt nur einen Weg, die Schleife richtig auszudrücken. Versuche die Funktionsweise von for-Schleifen zu verstehen und schreibe sie dann in eigenen Worten exakt so hin.
Es gibt zwei Möglichkeiten, wie man mit Pfaden arbeitet. + gehört nicht dazu. os.path.join habe ich verwendet, die andere wäre pathlib.Path, was moderner und meiner Meinung nach besser wäre. Wenn Du also nicht 1 zu 1 übernehmen möchtest, benutze pathlib.
Dass man erst alle Bilder in einer Liste sammelt, um sie dann zu einem Array zusammenzubauen, ist auch der einzig richtige Weg. Wenn Du willst, kannst Du daraus eine List-Comprehension machen, dann ist es auch nicht 1:1 kopiert.
Aber tatsächlich sollst Du jeden Schritt verstehen, warum es so besser ist, als das was Du schreibst.
Zum eigentlichen Problem:
Bilder haben die vier Dimensionen Anzahl-Bilder x Höhe x Breite x Farbkanäle. Wie möchtest Du daraus zwei machen?
Zum Code:
Ist es Absicht, dass das erste Bild zweimal im Ergebnis vorkommt?
Re: Wie konvertiere ich ein 3d Array in ein 2d Array?
Verfasst: Dienstag 13. August 2019, 13:39
von Meinnamegehtdichga
OK, dass man kein + bei Pfaden verwendet wusste ich nicht. Ich brauche es allerdings in 2 Dimensionen für scikit learn.
Re: Wie konvertiere ich ein 3d Array in ein 2d Array?
Verfasst: Dienstag 13. August 2019, 14:09
von __deets__
Wie sollen denn 2 Dimensionen daraus werden? Das musst du schon sagen. Sollen das Graustufen werden? Sollen die Farben einfach hintereinander kommen? Da gibt es keine generische Art, du musst schon genau festlegen wie.
Re: Wie konvertiere ich ein 3d Array in ein 2d Array?
Verfasst: Dienstag 13. August 2019, 17:00
von Meinnamegehtdichga
Eigentlich wäre das Ziel, soviel der daten zu erhalten. Gibt es da irgendeine Webseite die ein paar Methoden erklären?
Re: Wie konvertiere ich ein 3d Array in ein 2d Array?
Verfasst: Dienstag 13. August 2019, 17:56
von __deets__
Bestimmt. Hast du gesucht? Du willst doch irgendwas machen mit ML verfahren. Welche genau weißt doch nur du. Wie man dafür gute Trainingsdaten erstellt sollte sich dann doch rausfinden lassen.
Re: Wie konvertiere ich ein 3d Array in ein 2d Array?
Verfasst: Mittwoch 14. August 2019, 12:04
von ThomasL
Meinnamegehtdichga hat geschrieben: Dienstag 13. August 2019, 17:00
Eigentlich wäre das Ziel, soviel der daten zu erhalten. Gibt es da irgendeine Webseite die ein paar Methoden erklären?
Schau mal hier rein:
https://www.pyimagesearch.com/free-open ... sh-course/