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!
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”.
data
în ceva care posedă un atributastype
. Să zicem, o matrice numpy. Făcândimport numpy as np;data = np.array(data).astype('float32')
– > Por keepAlive.np.array(data)
produce de faptfloat64
s. Verificați acest lucru făcândprint(data.dtype)
. – > Por keepAlive.