¿Cómo integro dos matrices de datos 1-D en Python?

Tengo dos matrices de datos tabuladas, x e y, y no conozco la función que generó los datos. Quiero poder evaluar la integral de la línea producida por los datos en cualquier punto a lo largo del eje x.

En lugar de interpolar una función por partes a los datos y luego intentar integrar esa, con la que estoy teniendo problemas, ¿hay algo que pueda usar que simplemente proporcione la integral al evaluar las matrices?

Al buscar soluciones, he visto referencias a iPython y Pandas, pero no he podido encontrar las partes de esos paquetes que ayudarán en esta tarea.

Si no hay una manera de simplemente integrar los arreglos, ¿podría proporcionar algún consejo sobre la mejor manera de manejar esta tarea?

Scipy tiene algunas herramientas agradables para realizar la integración numérica.

Por ejemplo, puede usar scipy.integrate.simps para realizar la Regla de simpson, y puede pasar lo siguiente:

scipy.integrate.simps (y, x = Ninguno, dx = 1, axis = -1, incluso = ‘avg’)

Parámetros:
y: array_like Array para ser integrado.

x: array_like, opcional Si se da, los puntos en los que se muestrea y.

dx: int, espaciado opcional de puntos de integración a lo largo del eje de y. Solo se usa cuando x es Ninguno. El valor predeterminado es 1.

eje: int, eje opcional a lo largo del cual integrar. Por defecto es el último eje.

incluso: {‘avg’, ‘first’, ‘str’}, opcional

‘promedio’: promedio de dos resultados: 1) use los primeros intervalos N-2 con una regla trapezoidal en el último intervalo y 2) use los últimos intervalos N-2 con una regla trapezoidal en el primer intervalo.

‘primero’: use la regla de Simpson para los primeros intervalos N-2 con una regla trapezoidal en el último intervalo.

‘último’: use la regla de Simpson para los últimos intervalos N-2 con una regla trapezoidal en el primer intervalo.

Así que puedes usar tus dos matrices para hacer integración numérica.

Scipy tiene una función de integración que puede ayudarte.

Si desea utilizar la sum acumulativa de trapezoides para la integración, probablemente sería mejor para una serie de puntos.

Puedes hacerlo:

 >>> from scipy import integrate >>> x = np.linspace(-2, 2, num=20) >>> y = x >>> y_int = integrate.cumtrapz(y, x, initial=0) >>> plt.plot(x, y_int, 'ro', x, y[0] + 0.5 * x**2, 'b-') >>> plt.show() 

Esto también trazará los datos y se los mostrará gráficamente. Esta es la llamada de integración integra.cumtrapz integrate.cumtrapz(y, x, initial=0) donde x, y y son sus dos matrices.