Was meint float() argument must be a string or a number, not 'type'

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Meinnamegehtdichga
User
Beiträge: 13
Registriert: Donnerstag 8. August 2019, 16:23

Hallo, ich versuche schon seit längerer Zeit Bilder in Arrays zu laden, um diese weiterzunutzen.
Ich nahm dieses script um die Bilder zu Arrays zu machen.

i = 0
while i < len_path_parrot:
img = load_img("picturesready\\parrot\\" + path_parrot)
Z = img_to_array(img, dtype = float)
Z.flatten("F")
Z.astype(float)
X = numpy.append(X, Z)
y = numpy.append(y, 1)
i = i + 1

Das geht sehr gut. Der Inhalt dieser Arrays ist folgender:
array([<class 'float'>, 66.0, 98.0, ..., 244.0, 254.0, 255.0], dtype=object)

Aber bei dieser Zeile kommt ein Fehler.
X = X.astype(float)

Der Fehler lautet: float() argument must be a string or a number, not 'type'

Was meint dieser Fehler, und was kann ich machen, damit ich das Programm nutzen kann?
Sirius3
User
Beiträge: 18375
Registriert: Sonntag 21. Oktober 2012, 17:20

Woher kommt denn `X`? Das hast Du hier gar nicht definiert. Wahrscheinlich hat es aus irgendeinem Grund am Anfang den Wert `float`.
Warum verwendest Du `float` wo doch img_to_array Bytes liefert?
Die beiden Zeilen mit `Z.` haben keinen Effekt.
Statt einer while-Schleife willst Du eine for-Schleife benutzen.
Und statt immer wieder append aufzurufen, pack alles erst in eine Liste und ruf zum Schluß concatenate auf.

Code: Alles auswählen

images = []
for imagefilename in path_parrot:
    img = load_img(os.path.join("picturesready\\parrot", imagefilename))
    images.append(img.ravel('F'))
images = numpy.concatenate(images)
Benutze sprechendere Variablennamen; da `path_parrot` eine Liste ist, ist es üblich dafür einen Plural zu nehmen: parrot_paths. Was das `y` soll, weiß ich nicht (enthält sowieso nur einsen), daher habe ich es weggelassen.
Meinnamegehtdichga
User
Beiträge: 13
Registriert: Donnerstag 8. August 2019, 16:23

Was meint der Fehler denn eigentlich genau?
Benutzeravatar
__blackjack__
User
Beiträge: 14336
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Meinnamegehtdichga: Das habe ich in Deinem anderen Thema zu dem Thema schon geschrieben: viewtopic.php?f=30&t=46270#p350934
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Antworten