Cum se rezolvă problema AttributeError: obiectul „list” nu are atributul „astype”? (Programare, Python, Numpy, Atribute)

Tom a intrebat.

Mă întreb cum se poate rezolva eroarea de atribut din python3.6.Eroarea este

Obiectul ‘list’ nu are atributul ‘astype’.

Codul meu aferent este ca o lovitură.

def _init_mean_std(self, data):
    data = data.astype('float32')
    self.mean, self.std = np.mean(data), np.std(data)
    self.save_meanstd()
    return data

Este cineva care mă poate sfătui?

Vă mulțumesc!

Comentarii

  • Prin conversie data în ceva care posedă un atribut astype. Să zicem, o matrice numpy. Făcând import numpy as np;data = np.array(data).astype('float32') –  > Por keepAlive.
  • Nu știu dacă o faceți în mod voluntar, dar rețineți că în mod implicit np.array(data) produce de fapt float64s. Verificați acest lucru făcând print(data.dtype). –  > Por keepAlive.
1 răspunsuri
user6655984

Problema de bază este confuzia dintre listele Python și matricile NumPy, care sunt tipuri de date diferite. Metodele NumPy care sunt invocate ca np.foo(array) de obicei nu se vor plânge dacă le dați o listă Python, ele o vor converti în liniște într-o matrice NumPy. Dar dacă încercați să invocați o metodă conținută în obiect, cum ar fi array.foo() atunci, bineînțeles, trebuie să aibă deja tipul corespunzător.

Vă sugerez să utilizați

data = np.array(data, dtype=np.float32)

astfel încât tipul unui array să fie cunoscut imediat de NumPy. Astfel se evită munca inutilă în care mai întâi creați un array și apoi îl transformați într-un alt tip.

NumPy recomandă utilizarea dtype objects în loc de șiruri de caractere precum „float32”.