У меня возникла проблема с вызовом функции дважды. Если я прокомментирую мои последние 3 строки и сохраняю команду show(), то у меня не будет никакой ошибки, и что-то произойдет, поскольку они предполагают .. но если я dnot комментарий не как я пытаюсь вызвать последнюю функцию снова показывает эту ошибкуЗачем вызывать вызов дважды, показывая ошибку
Traceback (most recent call last):
File "second_1.py", line 29, in <module>
domega=c_d(len(t),t,z)
File "second_1.py", line 25, in c_d
dy[1:-1]=(y[2:]-y[0:-2])/(x[2:]-x[0:-2])
TypeError: unsupported operand type(s) for -: 'list' and 'list'
здесь функция
import numpy as np
from pylab import *
import time
t_initial=time.time()
clf()
t,hp,hn= np.loadtxt("Richardson.dat", usecols=(0,1,2),comments='#', unpack=True) # to select just a few columns
print(time.time()-t_initial)
def phi(y,x):
return(np.arctan(y/x))
phase=[0.0]*len(t)
phase=phi(hp[0:],hn[0:])
#plot(t,phase)
#show()
def c_d(order,x,y):
dy=[0.0]*order
dy[0]=(y[1]-y[0])/(x[1]-x[0])
dy[-1]=(y[-1]-y[-2])/(x[-1]-x[-2])
dy[1:-1]=(y[2:]-y[0:-2])/(x[2:]-x[0:-2])
return(dy);
z=c_d(len(t),t,phase);
plot(t,z)
print(len(z)-len(t))
domega=c_d(len(t),t,z)
plot(t,domega)
show()
Прочитать сообщение об ошибке, для списков нет оператора '-'. Ваш синтаксис 'y [2:]', например, сделает фрагмент **, который является списком ** вы не можете вычитать списки – CoryKramer
Не совсем понятно, что вы пытаетесь сделать. Попробуйте сделать эти списки «numpy» массивами, например. 'x = np.array (x)'. Для них можно использовать '-'. –
Я думаю, что комментарий @tobias_k поражает гвоздь на голове.Видимо, использование импорта pylab и numpy, OP используется для работы с массивами, а пулы Python и массивы numpy запутаны. Дополнительное примечание: 'from pylab import *' будет включать все от numpy; насколько я знаю, 'from pylab import *' не подходит для 'from pyplot import *; из numpy import * '. Также рекомендуется * не использовать этот вид импорта. 'from matplotlib import pyplot as plt' часто лучше и понятнее. – Evert