web-dev-qa-db-fra.com

python "TypeError: l'objet 'numpy.float64' ne peut pas être interprété comme un entier"

import numpy as np

for i in range(len(x)):
    if (np.floor(N[i]/2)==N[i]/2):
        for j in range(N[i]/2):
                pxd[i,j]=x[i]-(delta*j)*np.sin(s[i]*np.pi/180)
                pyd[i,j]=y[i]-(delta*j)*np.cos(s[i]*np.pi/180)

    else:
        for j in range((N[i]-1)/2):
                pxd[i,j]=x[i]-(delta*j)*np.sin(s[i]*np.pi/180)
                pyd[i,j]=y[i]-(delta*j)*np.cos(s[i]*np.pi/180)     

Quelqu'un at-il une idée de résoudre ce problème? Exécuter ces codes avec succès?

Merci,
Jeremy

14
user3700852
N=np.floor(np.divide(l,delta))
...
for j in range(N[i]/2):

N[i]/2 Sera un float64 Mais range() attend un entier. Il suffit de lancer l'appel à

for j in range(int(N[i]/2)):
13
Pavel

Je suis venu ici avec la même erreur, mais avec une origine différente.

Cela est dû à un indice flottant non pris en charge dans 1.12.0 et aux versions numpy plus récentes, même si le code doit être considéré comme valide.

Un type int est attendu, pas un np.float64

Solution: essayez d'installer numpy 1.11.0

Sudo pip install -U numpy==1.11.0.
4
mrk