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 :

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'
Initialement dans mon code j'avais mis un np.average qui aujourd'hui m'a produit une erreur de compilation.
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