Hi
es ist sicher ein einfaches Problem, aber ich finde keine Lösung,
Ich habe ein eindimensionales Numpy-Array (Name: daten) , welches ich einem Muster anpassen möchte.
Daher:
breite = 7
daten = daten.reshape.(-1, breite)
Aber beim kompilieren kommt dann:
ValueError: total size of new array must be unchanged
kann mir das einer erklären bzw. eine Lösung anbieten?
reshape bei numpy fehlgeschlagen
@smith0815: Die Rechnung muss natürlich ”aufgehen”, d.h. die neue Form muss alle Elemente des Arrays verwenden. Nicht mehr und auch nicht weniger. Bei dem konkreten Beispiel muss die Anzahl der Elemente durch 7 teilbar sein. Wie sollte auch sonst das Ergebnis aussehen!?
Es bedeutet, dass Dein Array vor dem Reshape Versuch mehr oder weniger als 7 Elemente hatte.
Beispielsweise kannst Du 4x4 in 8x2, 2x8, 1x16 oder 16x1 verändern. Alles andere führt zur o.g. Fehlermeldung.
Beispielsweise kannst Du 4x4 in 8x2, 2x8, 1x16 oder 16x1 verändern. Alles andere führt zur o.g. Fehlermeldung.
Beispiel:
Jetzt sollte es klar sein, oder?
Code: Alles auswählen
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6, 7, 8])
np.reshape(a,(2,4))
@ smith0815: 6 != 7
Was ist denn
?
Code: Alles auswählen
daten.shape
es scheint ein Problem beim Einlesen der Daten zu geben.
Ich habe ein Textfile mit 6 Spalten, jeweils mit Zahlen gefüllt leider sind nicht alle Daten vorhanden,
daher sind die fehlenden mit *** gekennzeichnet.
Ich lese die Daten mit:
fromfile(pfad,dtype='f4',sep=" ")
wobei er wohl ein Problem mit den *** hat und abbricht.
Jetzt habe ich das Einlesen manuell laufen und das dauert Zzzzz
Es sind insgesamt über 400.000 Datensätze und jeweils 6 Spalten
daher sind die lumpigen 30.000 Datenfelder etwas wenig.
kennt jemand ne schnellere Möglichkeit (ähnlich der fromfile-Version)
mit dem ich die Zahlen und die Sternchen einlesen kann?
Ich habe ein Textfile mit 6 Spalten, jeweils mit Zahlen gefüllt leider sind nicht alle Daten vorhanden,
daher sind die fehlenden mit *** gekennzeichnet.
Ich lese die Daten mit:
fromfile(pfad,dtype='f4',sep=" ")
wobei er wohl ein Problem mit den *** hat und abbricht.
Jetzt habe ich das Einlesen manuell laufen und das dauert Zzzzz
Es sind insgesamt über 400.000 Datensätze und jeweils 6 Spalten
daher sind die lumpigen 30.000 Datenfelder etwas wenig.
kennt jemand ne schnellere Möglichkeit (ähnlich der fromfile-Version)
mit dem ich die Zahlen und die Sternchen einlesen kann?
Ja, genfromtxt.
ich glaub, ich bin zu doof für Python
wie sieht denn der code für folgenden Text aus
bzw. Inhalt des Textfiles
fehlermeldung ist übrigens
Line #2 (got 12 columns instead of 11)
Line #3 (got 12 columns instead of 11)
Line #4 (got 10 columns instead of 11)
Line #5 (got 10 columns instead of 11)
Line #6 (got 10 columns instead of 11)
Line #8 (got 13 columns instead of 11)
Line #9 (got 13 columns instead of 11)
.
.
.
Line #398310 (got 9 columns instead of 11)
Line #398311 (got 9 columns instead of 11)
Mein Code ist:
wie sieht denn der code für folgenden Text aus
Code: Alles auswählen
2 23.03 5.42 264 20 21438.00208
411 -70.22 -59.25 304 25 ************
311 23.13 -82.13 257 28 ************
fehlermeldung ist übrigens
Line #2 (got 12 columns instead of 11)
Line #3 (got 12 columns instead of 11)
Line #4 (got 10 columns instead of 11)
Line #5 (got 10 columns instead of 11)
Line #6 (got 10 columns instead of 11)
Line #8 (got 13 columns instead of 11)
Line #9 (got 13 columns instead of 11)
.
.
.
Line #398310 (got 9 columns instead of 11)
Line #398311 (got 9 columns instead of 11)
Mein Code ist:
Code: Alles auswählen
daten=np.genfromtxt(pfad,dtype='f4',delimiter=" ", missing_values="************")
@smith0815: Wenn Du den Trenner als " " angibst, also ein Leerzeichen, dann geht die Funktion davon aus, dass der Trenner wirklich *genau ein* Leerzeichen ist. Zwei Leerzeichen nebeneinander trennen dann ein Feld in dem nichts drin steht. Lies Dir mal die Dokumentation zum `delimiter`-Argument durch.
das heißt ich muss den delimiter erweitert werden
klappt leider auch nicht
Code: Alles auswählen
daten=np.genfromtxt(pfad,dtype='f4',delimiter=[" "," "," "," "], missing_values="************")
@smith0815: Lies noch mal was die Felder trennt, wenn Du *keinen* `delimiter` angibst.