2010-11-10 2 views
1
benfordd = dict() 
for attr in attrs: 
     benfordd.setdefault(attr, []).extend([val*1e6 for val in x if not np.isnan(val)]) 

ci-dessus est juste une partie de mon code, pourquoi est-ce que quand je lance cela dans ipython, je reçois ceci:Aide avec cette typerror dans un dictionnaire

TypeError: fonction non prise en charge pour ces types, et ne peut pas coercer en toute sécurité aux types supportés.

Est-ce que quelqu'un sait quelles valeurs sont nécessaires pour cela? attr sont des chaînes.

p.s., que signifie "val"?

+1

"val" est un abréviation de valeur. Si vous voulez savoir ce que cela signifie dans ce contexte, lisez à propos de la liste des compréhensions: http://docs.python.org/tutorial/datastructures.html#list-comprehensions – nmichaels

Répondre

1

Je crois que cette erreur peut survenir lors de l'utilisation de Sage avec numpy. La raison est que Sage prépare votre entrée, de sorte que par exemple. 0.6**2 est traduite en RealNumber('0.6') ** Integer(2). Cela lui permet de gérer des nombres réels avec une précision arbitraire. Malheureusement, numpy ne peut pas les gérer, car il ne sait pas ce qu'est un RealNumber.

Si vous définissez RealNumber = float, le code devrait fonctionner; voir the docs.

+0

cela ne fonctionne pas, mais merci de me pointer en ce que direction, je vais regarder dans. Faites-moi savoir si vous avez d'autres idées! Merci. – user365930