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: 17741
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: 13079
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
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten