web-dev-qa-db-fra.com

TypeError: itération sur un tableau 0-d Python

J'essaie d'écrire un calcul de voisin très basique. Je veux essentiellement voir à quoi ça ressemble, mais j'ai ce type d'erreur. Quand j'ai demandé au funciton de revenir juste il a dit "". Quand je lui ai demandé de se tourner vers la liste, il a lancé "TypeError: itération sur un tableau 0-d Python"

Comment puis-je résoudre ce problème s'il vous plaît?

...

t = np.array(map(lambda v:
             map(lambda w: distance(v, w, L), x_train.values),
             x_test.values)) 

...

Trace complète: enter image description here

5
Anna Huang

Le problème est np.array ne prend pas d'itérateur, vous devez d'abord convertir en list, comme ci-dessous:

t = np.array(list(map(lambda v: map(lambda w: distance(v, w, L),
                      x_train.values), x_test.values)))

Selon numpy.arraydocumentation , le paramètre requis doit être:

Un tableau, tout objet exposant l'interface de tableau, un objet dont la méthode de tableau renvoie un tableau ou toute séquence (imbriquée).

Vous pouvez également utiliser numpy.fromiter et n'oubliez pas de fournir dtype, par exemple dtype=float.

6
jpp