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
Wie konvertiere ich ein 3d Array in ein 2d Array?
-
- User
- Beiträge: 13
- Registriert: Donnerstag 8. August 2019, 16:23
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?
@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?
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?
-
- User
- Beiträge: 13
- Registriert: Donnerstag 8. August 2019, 16:23
OK, dass man kein + bei Pfaden verwendet wusste ich nicht. Ich brauche es allerdings in 2 Dimensionen für scikit learn.
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.
-
- User
- Beiträge: 13
- Registriert: Donnerstag 8. August 2019, 16:23
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/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?
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png