Что означает «модуль» объект не является подписным? - PullRequest
0 голосов
/ 09 ноября 2019

Учитывая время и расстояние (2000 точек) от CSV, мне нужно рассчитать скорость и ускорение:

import math

import numpy as np

import pandas as pd

#Excercise 2a

#input the csv

df = pd.read_csv('Data_oscillator.csv')

time = df['Time'].values

distance = df['x(t)'].values

velob = np.zeros(2000)

accelb = np.zeros(2000)

# differentiating distance to find new velocity and acceleration 

for i in range (0,1999):

    velob[i] = (distance[i+1] - distance[i])/(time[i+1] - time [i])

for i in range (0,1999):

    accelb[i] = (velob[i+1] - velob[i])/(time[i+1] - time[i])

Я получаю следующую ошибку:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)

<ipython-input-28-abd6ce780481> in <module>

      5 # differentiating distance to find new velocity and acceleration

      6 for i in range (0,1999):

----> 7     velob[i] = (distance[i+1] - distance[i])/(time[i+1] - time [i])

      8 

      9 for i in range (0,1999):


TypeError: 'module' object is not subscriptable

Ответы [ 2 ]

0 голосов
/ 09 ноября 2019

Имя переменной time конфликтует со встроенной библиотекой Python, которую можно импортировать как модуль (см. здесь ). Применение подписей [i] к этому недопустимо, поэтому появляется сообщение об ошибке. Попробуйте изменить имя вашей переменной на что-то отличное от time. Как правило, рекомендуется избегать имен общих переменных, которые могут вызвать аналогичные конфликты с модулями;вместо этого используйте более описательные имена переменных:

import math

import numpy as np

import pandas as pd

#Excercise 2a

#input the csv

df = pd.read_csv('Data_oscillator.csv')

timeValues = df['Time'].values

distance = df['x(t)'].values

velob = np.zeros(2000)

accelb = np.zeros(2000)

# differentiating distance to find new velocity and acceleration 

for i in range (0,1999):

    velob[i] = (distance[i+1] - distance[i])/(timeValues[i+1] - timeValues[i])

for i in range (0,1999):

    accelb[i] = (velob[i+1] - velob[i])/(timeValues[i+1] - timeValues[i])
0 голосов
/ 09 ноября 2019

Похоже, что в конце второй строки между временем и [i] есть пробел, возможно, именно поэтому вы получаете эту ошибку.

for i in range (0,1999):
    velob[i] = (distance[i+1] - distance[i])/(time[i+1] - time [i])

"время" - также названиемодуля из стандартной библиотеки в Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...