Bonjour à tous
Après plusieurs heures de recherche dans mon gros code qui manipule des array, j'ai identifié la source précise de mon problème.
Je vous la présente :
Initialement dans mon code j'avais mis un np.average qui aujourd'hui m'a produit une erreur de compilation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 >>> import numpy as np >>> a=np.array([1,2,3]) >>> b=np.array([1,2,3], dtype=object) >>> a array([1, 2, 3]) >>> b array([1, 2, 3], dtype=object) >>> np.mean(a) 2.0 >>> np.mean(b) 2.0 >>> np.average(a) 2.0 >>> np.average(b) Traceback (most recent call last): File "<pyshell#43>", line 1, in <module> np.average(b) File "/Library/Python/2.7/site-packages/numpy/lib/function_base.py", line 515, in average scl = avg.dtype.type(a.size/avg.size) AttributeError: 'float' object has no attribute 'dtype'
En mettant np.mean à la place, cela fonctionne mais j'aimerais bien comprendre pourquoi ...
De plus, quel est le role de ce mystérieux attribut dtype ? (Je le spécifie ici à la main, mais dans mon code rien de cela, l'array est géneré en fonction de d'autre. C'est avec pdb que j'ai remarqué que parfois il avait l'attribut dtype=object et d'autre non ... )
Question subsidiaire :
Si je veux mettre ce petit test dans un script la commande print a, tout comme la commande print b me fournit : [1,2,3]
Comment puis-je faire afficher de la même manière que l'affichage de base dans le shell (c-a-d de sorte à ce que l'affichage de a et de b produise respectivement array([1, 2, 3]) et array([1, 2, 3], dtype=object) ) ?
Merci pour vos réponses
Lg_53
Partager