Подтвердить что ты не робот

Python "TypeError: объект numpy.float64 не может быть интерпретирован как целое число"

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)     

Есть ли у кого-нибудь идея решить эту проблему? Выполнение этих кодов успешно?

Спасибо,
Джереми

4b9b3361

Ответ 1

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

N[i]/2 будет float64, но range() ожидает целое число. Просто оставьте вызов

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

Ответ 2

Я пришел сюда с той же ошибкой, но с другим происхождением.

Это вызвано неподдерживаемым индексом с плавающей запятой в 1.12.0 и более поздними версиями, даже если код должен считаться допустимым.

Ожидается тип int, а не np.float64

Решение: попробуйте установить numpy 1.11.0

sudo pip install -U numpy==1.11.0.

Ответ 3

У меня такая же проблема в этой строке моего скрипта

    samples = np.append(np.zeros(np.floor(frameSize/2.0)), sig)

Я пытался, как вы сказали:

samples = np.append(np.zeros(np.floor(int(frameSize/2.0))),sig)

Также я попробовал это:

    samples = np.append(np.zeros(int(frameSize/2.0)),sig)

Но у меня все та же ошибка сообщения. Numpy версия, которую я имею, является 1.15.4. Можете ли вы помочь мне?