вычисление частичной области под кривой с заданными интервалами

#python #numerical-integration

#python #численное интегрирование

Вопрос:

Мне нужно интегрировать область под кривой, но вместо того, чтобы сразу интегрировать всю область под кривой, я хотел бы интегрировать частичные области с заданным интервалом в 5 м. Т.Е. я хотел бы знать область под кривой от 0 до 5 м, 5-10 м, 10- 15m и т.д.

Однако интервал между моими значениями x нерегулярен (т. Е. Он не проходит [1, 2, 3, 4…] но скорее мог бы пойти, [1, 1.2, 2, 2.3, 3.1, 4…]. Так что я не могу идти по индексу, а скорее должен идтипо значениям, и я хочу создавать интервалы каждые 5 метров.

 # Here is a sample of the data set (which I do NOT use in the function below, just an example of how irregular the spacing between x values is)
x = [0, 1.0, 2.0, 3.0, 4.3, 5.0, 6.0, 7.0, 8.0, 9.0, 10, 12, 12.5, 12.7, 13, 14.5, 15, 15.5, 16, 16.5]
y = [0, -0.44, -0.83, -0.91, -1.10, -1.16, -1.00, -1.02, -1.05, -1.0, -0.94, - 0.89, -1, -1.39, -1.44, -1.88, -1.9, -1.94, -2.03, -1.9]
 

Я создал функцию для получения частичной области на основе одного определенного интервала (5 <x<10), но мне нужно выяснить, как это сделать для всего фрейма данных.

 from scipy.integrate import simps 

def partial_area (y, x):
    x =df.query('5 <= X <= 10')['X']
    y =df.query('5 <= X <= 10')['Z']
    area = simps(y,x)
    return (area)

area = partial_area(y,x)


 

Я застрял на лучшем способе сделать это, поскольку я не уверен, как создавать интервалы по значениям данных, а не по индексу.