web-dev-qa-db-fra.com

Comment résoudre l'attributError: l'objet 'liste' n'a pas d'attribut 'astype'?

Je me demande simplement comment résoudre l'erreur d'attribut dans python3.6. L'erreur est

L'objet 'list' n'a pas d'attribut 'astype'.

Mon code apparenté est comme un coup.

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

Y a-t-il quelqu'un qui peut me conseiller?

Merci!

10
Tom

Le problème racine est la confusion des Python et tableaux NumPy, qui sont différents types de données. Les méthodes NumPy qui sont appelées comme np.foo(array) ne se plaindront généralement pas si vous leur donnez un Python list, ils le convertiront silencieusement en tableau NumPy. Mais si vous essayez d'appeler une méthode contenue dans l'objet, comme array.foo() alors bien sûr, elle doit avoir le type approprié déjà.

Je suggère d'utiliser

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

afin que le type d'un tableau soit connu de NumPy à la fois. Cela évite un travail inutile lorsque vous créez d'abord un tableau, puis le convertissez en un autre type.

NumPy recommande d'utiliser objets dtype au lieu de chaînes comme "float32".

11
user6655984