Tutorial de SciPy: ¿Qué es Python SciPy y cómo usarlo?



SciPy es una biblioteca de Python utilizada para resolver problemas científicos y matemáticos. NumPy vs SciPy. Básico, Especial, Integración, Optimización, etc con ejemplos.

Las matemáticas tratan una gran cantidad de conceptos que son muy importantes pero, al mismo tiempo, complejos y requieren mucho tiempo. Sin embargo, proporciona la biblioteca SciPy completa que nos resuelve este problema. En este tutorial de SciPy, aprenderá a utilizar esta biblioteca junto con algunas funciones y sus ejemplos.

Antes de continuar, eche un vistazo a todos los temas tratados en este artículo:





Entonces empecemos. :)

¿Qué es SciPy?

SciPy es una biblioteca de Python de código abierto que se utiliza para resolver problemas científicos y matemáticos. Está construido sobre el extensión y permite al usuario manipular y visualizar datos con una amplia gama de comandos de alto nivel. Como se mencionó anteriormente, SciPy se basa en NumPy y, por lo tanto, si importa SciPy, no es necesario importar NumPy.



NumPy vs SciPy

Tanto NumPy como SciPy son utilizado para el análisis matemático y numérico usado. NumPy contiene datos de matriz y operaciones básicas como clasificación, indexación, etc., mientras que SciPy consta de todo el código numérico. Aunque NumPy proporciona una serie de que puede ayudar a resolver álgebra lineal, transformadas de Fourier, etc., SciPy es la biblioteca que en realidad contiene versiones completas de estas funciones junto con muchas otras. Sin embargo, si está realizando un análisis científico con Python, deberá instalar tanto NumPy como SciPy, ya que SciPy se basa en NumPy.

Subpaquetes en SciPy:

SciPy tiene varios subpaquetes para varios cálculos científicos que se muestran en la siguiente tabla:

NombreDescripción
racimoAlgoritmos de agrupamiento
constantesConstantes físicas y matemáticas
fftpackRutinas de transformación rápida de Fourier
integrarSolucionadores de ecuaciones diferenciales ordinarias y de integración
interpolarInterpolación y suavizado de splines
yoEntrada y salida
linalgÁlgebra lineal
yo vueloProcesamiento de imágenes N-dimensional
odrRegresión de distancia ortogonal
optimizarRutinas de optimización y búsqueda de raíces
señalProcesamiento de la señal
escasoMatrices dispersas y rutinas asociadas
espacialEstructuras de datos espaciales y algoritmos
especialFunciones especiales
estadisticasDistribuciones y funciones estadísticas

Sin embargo, para obtener una descripción detallada, puede seguir las documentación oficial .



Estos paquetes deben importarse exclusivamente antes de usarlos. Por ejemplo:

desde el clúster de importación scipy

Antes de analizar cada una de estas funciones en detalle, primero echemos un vistazo a las funciones que son comunes tanto en NumPy como en SciPy.

Funciones básicas:

Interacción con NumPy:

SciPy se basa en NumPy y, por lo tanto, puede hacer uso de las funciones de NumPy para manejar matrices. Para conocer en profundidad estas funciones, simplemente puede hacer uso de las funciones help (), info () o source ().

Ayuda():

Para obtener información sobre cualquier función, puede utilizar la Ayuda() función. Hay dos formas de utilizar esta función:

  • sin ningún parámetro
  • usando parámetros

A continuación, se muestra un ejemplo que muestra los dos métodos anteriores:

de scipy import cluster help (cluster) #con parámetro help () #sin parámetro

Cuando ejecuta el código anterior, la primera ayuda () devuelve la información sobre el racimo submódulo. La segunda ayuda () le pide al usuario que ingrese el nombre de cualquier módulo, palabra clave, etc. para el cual el usuario desea buscar información. Para detener la ejecución de esta función, simplemente escriba 'salir' y presione enter.

info ():

Esta función devuelve información sobre el , módulos, etc.

scipy.info (clúster)

fuente():

El código fuente se devuelve solo para los objetos escritos en . Esta función no devuelve información útil en caso de que los métodos u objetos estén escritos en cualquier otro lenguaje como C. Sin embargo, en caso de querer hacer uso de esta función, puede hacerlo de la siguiente manera:

scipy.source (clúster)

Funciones especiales:

SciPy proporciona una serie de funciones especiales que se utilizan en física matemática, como elíptica., funciones de conveniencia, gamma, beta, etc.Para buscar todas las funciones, puede hacer uso de la función help () como se describió anteriormente.

cómo ordenar una matriz c ++

Funciones exponenciales y trigonométricas:

El paquete de funciones especiales de SciPy proporciona una serie de funciones a través de las cuales puede encontrar exponentes y resolver problemas trigonométricos.

Considere el siguiente ejemplo:

EJEMPLO:

de scipy import especial a = especial.exp10 (3) imprimir (a) b = especial.exp2 (3) imprimir (b) c = especial.sindg (90) imprimir (c) d = especial.cosdg (45) imprimir ( re)

SALIDA:

1000.0
8.0
1.0
0.7071067811865475

Hay muchas otras funciones presentes en el paquete de funciones especiales de SciPy que puede probar usted mismo.

Funciones de integración:

SciPy proporciona una serie de funciones para resolver integrales. Desde un integrador diferencial ordinario hasta el uso de reglas trapezoidales para calcular integrales, SciPy es un almacén de funciones para resolver todo tipo de problemas de integrales.

Integración general:

SiPy proporciona una función llamada patio para calcular la integral de una función que tiene una variable. Los límites pueden ser ± e infin(± inf) para indicar límites infinitos. La sintaxis de la función quad () es la siguiente:

SINTAXIS:

quad (func, a, b, args = (), full_output = 0, epsabs = 1.49e-08, epsrel = 1.49e-08, límite = 50, puntos = Ninguno, peso = Ninguno, wvar = Ninguno, wopts = Ninguno , maxp1 = 50, limlst = 50)

Aquí, la función se integrará entre los límites ayb (también puede ser infinito).

EJEMPLO:

desde scipy import special desde scipy import integra a = lambda x: special.exp10 (x) b = scipy.integrate.quad (a, 0, 1) print (b)

En el ejemplo anterior, la función 'a' se evalúa entre los límites 0, 1. Cuando se ejecuta este código, verá la siguiente salida.

SALIDA:

(3.9086503371292665, 4.3394735994897923e-14)

Función integral doble:

SciPy proporciona dblquad que se puede utilizar para calcular integrales dobles. Una integral doble, como muchos de nosotros sabemos, consta de dos variables reales. La función dblquad () tomará como parámetro la función a integrar junto con otras 4 variables que definen los límites y las funciones dy y dx.

EJEMPLO:

de scipy import integra a = lambda y, x: x * y ** 2 b = lambda x: 1 c = lambda x: -1 integra.dblquad (a, 0, 2, b, c)

SALIDA:

-1.3333333333333335, 1.4802973661668755e-14)

SciPy proporciona varias otras funciones para evaluar integrales triples, n integrales, integrales de Romberg, etc., que puede explorar con más detalle. Para encontrar todos los detalles sobre las funciones necesarias, utilice la función de ayuda.

Funciones de optimización:

Scipy.optimize proporciona una serie de algoritmos de optimización de uso común que se pueden ver utilizando la función de ayuda.

Básicamente consta de lo siguiente:

  • Minimización restringida y sin restricciones de funciones escalares multivariantes, es decir minimizar (por ejemplo, BFGS, gradiente conjugado de Newton, Nelder_mead simplex, etc.)
  • Rutinas de optimización global (por ejemplo, diferencial_evolución, dual_annealing, etc.)
  • Minimización de mínimos cuadrados y ajuste de curvas (por ejemplo, mínimos_cuadrados, ajuste de curvas, etc.)
  • Minimizadores de funciones univariadas escalares y buscadores de raíces (por ejemplo, minimizar_escalar y raíz_escalar)
  • Solucionadores de sistemas de ecuaciones multivariantes que utilizan algoritmos como el híbrido Powell, Levenberg-Marquardt.

Función Rosenbrook:

Función de Rosenbrook ( rosen ) es un problema de prueba utilizado para algoritmos de optimización basados ​​en gradientes. Se define de la siguiente manera en SciPy:

rosen-Scipy tutorial-edurekaEJEMPLO:

importar numpy as np de scipy.optimize import rosen a = 1.2 * np.arange (5) rosen (a)

SALIDA: 7371.0399999999945

Nelder-Mead:

losNelder–El método Mead es un método numérico que se usa a menudo para encontrar el mínimo / máximo de una función en un espacio multidimensional. En el siguiente ejemplo, el método de minimizar se utiliza junto con el algoritmo de Nelder-Mead.

EJEMPLO:

de scipy import optimizar a = [2.4, 1.7, 3.1, 2.9, 0.2] b = optimizar.minimizar (optimizar.rosen, a, método = 'Nelder-Mead') b.x

SALIDA: matriz ([0.96570182, 0.93255069, 0.86939478, 0.75497872, 0.56793357])

Funciones de interpolación:

En el campo del análisis numérico, la interpolación se refiere a la construcción de nuevos puntos de datos dentro de un conjunto de puntos de datos conocidos. La biblioteca SciPy consta de un subpaquete llamado scipy.interpolate que consta defunciones y clases de spline, clases de interpolación unidimensionales y multidimensionales (univariadas y multivariadas), etc.

Interpolación univariante:

La interpolación univariante es básicamente un área de ajuste de curvas queencuentra la curva que proporciona un ajuste exacto a una serie de puntos de datos bidimensionales. SciPy proporciona interp1d función que se puede utilizar para producir interpolación univariante.

EJEMPLO:

importar matplotlib.pyplot como plt de scipy importar interpolar x = np.arange (5, 20) y = np.exp (x / 3.0) f = interpolate.interp1d (x, y) x1 = np.arange (6, 12) y1 = f (x1) # usa la función de interpolación devuelta por `interp1d` plt.plot (x, y, 'o', x1, y1, '-') plt.show ()

SALIDA:

Interpolación multivariante:

Interpolación multivariante(espacialinterpolación) es un tipointerpolaciónen funciones que constan de más de una variable. El siguiente ejemplo muestra un ejemplo de interp2d función.
Interpolar sobre una cuadrícula 2-D usando la función interp2d (x, y, z) básicamente usará matrices x, y, z para aproximar alguna función f: 'z = f (x, y)' y devuelve una función cuyo método de llamada usa interpolación spline para encontrar el valor de nuevos puntos.
EJEMPLO:

de scipy import interpolate import matplotlib.pyplot as plt x = np.arange (0,10) y = np.arange (10,25) x1, y1 = np.meshgrid (x, y) z = np.tan (xx + yy) f = interpolate.interp2d (x, y, z, kind = 'cubic') x2 = np.arange (2,8) y2 = np.arange (15,20) z2 = f (xnew, ynew) plt. plot (x, z [0,:], 'ro-', x2, z2 [0,:], '-') plt.show ()

SALIDA:

Funciones de transformada de Fourier:

El análisis de Fourier es un método que se ocupa de expresar una función como una suma de componentes periódicos y recuperar la señal de esos componentes. los fft Las funciones se pueden utilizar para devolver eltransformada discreta de Fourier de una secuencia real o compleja.

EJEMPLO:

de scipy.fftpack import fft, ifft x = np.array ([0,1,2,3]) y = fft (x) print (y)

SALIDA: [6. + 0.j -2. + 2.j -2. + 0.j -2.-2.j]

De manera similar, puede encontrar el inverso de esto usando el ifft funcionan de la siguiente manera:

EJEMPLO:

rom scipy.fftpack import fft, ifft x = np.array ([0,1,2,3]) y = ifft (x) print (y)

SALIDA: [1.5 + 0.j -0.5-0.5j -0.5 + 0.j -0.5 + 0.5j]

Funciones de procesamiento de señales:

El procesamiento de señales se ocupa deanalizar, modificar y sintetizar señales como sonido, imágenes, etc. SciPy proporciona algunas funciones con las que puede diseñar, filtrar e interpolar datos unidimensionales y bidimensionales.

Filtración:

Al filtrar una señal, básicamente eliminas los componentes no deseados. Para realizar un filtrado ordenado, puede utilizar el order_filter función. Esta función básicamente realiza un filtrado ordenado en una matriz. La sintaxis de esta función es la siguiente:

SINTAXIS:
order_filter (a, dominio, rango)

a = matriz de entrada N-dimensional

dominio = matriz de máscara que tiene el mismo número de dimensiones que `a`

rango = número no negativo que selecciona elementos de la lista después de haber sido ordenados (0 es el más pequeño seguido de 1…)

EJEMPLO:

de la señal de importación scipy x = np.arange (35) .reshape (7, 5) dominio = np.identity (3) print (x, end = 'nn') print (signal.order_filter (x, domain, 1))

SALIDA:

[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]
[25 26 27 28 29]
[30 31 32 33 34]]

[[ 0. 1. 2. 3. 0.]
[ 5. 6. 7. 8. 3.]
[10. 11. 12. 13. 8.]
[15. 16. 17. 18. 13.]
[20. 21. 22. 23. 18.]
[25. 26. 27. 28. 23.]
[ 0. 25. 26. 27. 28.]]

Formas de onda:

El subpaquete scipy.signal también consta de varias funciones que pueden usarse para generar formas de onda. Una de esas funciones es chirrido . Esta función es una fgenerador de coseno de frecuencia barrida y la sintaxis es la siguiente:

SINTAXIS:
chirp (t, f0, t1, f1, method = ’linear’, phi = 0, vertex_zero = True)

dónde,

EJEMPLO:

de scipy.signal import chirp, spectrogram import matplotlib.pyplot as plt t = np.linspace (6, 10, 500) w = chirp (t, f0 = 4, f1 = 2, t1 = 5, method = 'linear') plt.plot (t, w) plt.title ('Chirp lineal') plt.xlabel ('tiempo en segundos)') plt.show ()

SALIDA:

Álgebra lineal:

El álgebra lineal se ocupa de las ecuaciones lineales y sus representaciones utilizando espacios vectoriales y matrices. SciPy se basa enBibliotecas ATLAS LAPACK y BLAS y esextremadamente rápido en la resolución de problemas relacionados con el álgebra lineal. Además de todas las funciones de numpy.linalg, scipy.linalg también proporciona una serie de otras funciones avanzadas. Además, si numpy.linalg no se usa junto conCompatible con ATLAS LAPACK y BLAS, scipy.linalg es más rápido que numpy.linalg.

Encontrar la inversa de una matriz:

Matemáticamente, la inversa de una matriz Aes la matrizBtal queAB = Idóndeyoes la matriz de identidad que consta de unos en la diagonal principal denotada comoB = A-1. En SciPy, este inverso se puede obtener usando el linalg.inv método.

EJEMPLO:

import numpy as np from scipy import linalg A = np.array ([[1,2], [4,3]]) B = linalg.inv (A) print (B)

SALIDA:

[[-0.6 0.4]
[ 0.8 -0.2]]

Encontrar los determinantes:

El valor derivado aritméticamente de los coeficientes de la matriz se conoce como determinante de una matriz cuadrada. En SciPy, esto se puede hacer usando una función la que tiene la siguiente sintaxis:

SINTAXIS:
det (a, sobreescribe_a = Falso, check_finite = Verdadero)
dónde,

a: (M, M) es una matriz cuadrada

sobrescribir_a (bool, opcional): permite sobrescribir datos en un

check_finite (bool, opcional): para comprobar si la matriz de entrada consta solo de números finitos

EJEMPLO:

import numpy as np from scipy import linalg A = np.array ([[1,2], [4,3]]) B = linalg.det (A) print (B)

SALIDA: -5.0

Autovalores escasos:

Los valores propios son un conjunto específico de escalares vinculados con ecuaciones lineales. El ARPACK proporciona que le permiten encontrar valores propios (vectores propios) bastante rápido. La funcionalidad completa de ARPACK está incluida endos interfaces de alto nivel que son scipy.sparse.linalg.eigs y scipy.sparse.linalg.eigsh. eigs. La interfaz eigs le permite encontrar los valores propios de matrices cuadradas no simétricas reales o complejas, mientras que la interfaz eigsh contiene interfaces para matrices real-simétricas o complejas-hermitianas.

los ocho La función resuelve un problema de valor propio generalizado para una matriz simétrica real o hermitiana compleja.

EJEMPLO:

de scipy.linalg import eigh import numpy as np A = np.array ([[1, 2, 3, 4], [4, 3, 2, 1], [1, 4, 6, 3], [2, 3, 2, 5]]) a, b = eigh (A) print ('Autovalores seleccionados:', a) print ('Complex ndarray:', b)

SALIDA:

Valores propios seleccionados: [-2,53382695 1,66735639 3,69488657 12,17158399]
Ndarray complejo: [[0.69205614 0.5829305 0.25682823 -0.33954321]
[-0.68277875 0.46838936 0.03700454 -0.5595134 ]
[ 0.23275694 -0.29164622 -0.72710245 -0.57627139]
[ 0.02637572 -0.59644441 0.63560361 -0.48945525]]

Estructuras y algoritmos de datos espaciales:

Los datos espaciales consisten básicamente en objetos que se componen de líneas, puntos, superficies, etc. El paquete scipy.spatial de SciPy puede calcularDiagramas de Voronoi, triangulaciones, etc. utilizando la biblioteca Qhull. También consta de implementaciones de KDTree para consultas de puntos vecinos más cercanos.

Triangulaciones de Delaunay:

Matemáticamente, las triangulaciones de Delaunay para un conjunto de puntos discretos en un plano es una triangulación tal que ningún punto del conjunto de puntos dado esdentro de la circunferencia de cualquier triángulo.

EJEMPLO:

importar matplotlib.pyplot como plt de scipy.spatial importar puntos Delaunay = np.array ([[0, 1], [1, 1], [1, 0], [0, 0]]) a = Delaunay (puntos) #Delaunay object print (a) print (a.simplices) plt.triplot (puntos [:, 0], puntos [:, 1], a.simplices) plt.plot (puntos [:, 1], puntos [:, 0], 'o') plt.show ()

SALIDA:

Funciones de procesamiento de imágenes multidimensionales:

El procesamiento de imágenes se ocupa básicamente de realizar operaciones en una imagen para recuperar información o para obtener una imagen mejorada de la original. El paquete scipy.ndimage consta de variosFunciones de procesamiento y análisis de imágenes diseñadas para trabajar con matrices de dimensionalidad arbitraria.

Convolución y correlación:

SciPy proporciona una serie de funciones que permiten la correlación y convolución de imágenes.

  • La función correlate1d se puede utilizar para calcular la correlación unidimensional a lo largo de un eje dado
  • La función correlación permite la correlación multidimensional de cualquier matriz dada con el kernel especificado
  • La función convolve1d se puede utilizar para calcular la convolución unidimensional a lo largo de un eje dado
  • La función retorcerse permite la convolución multidimensional de cualquier matriz dada con el kernel especificado

EJEMPLO:

import numpy as np from scipy.ndimage import correlate1d correlate1d ([3,5,1,7,2,6,9,4], weights = [1,2])

SALIDA: matriz ([9, 13, 7, 15, 11, 14, 24, 17])

Archivo IO:

El paquete scipy.io proporciona una serie de funciones que lo ayudan a administrar archivos de diferentes formatos, como archivos MATLAB, archivos IDL, archivos Matrix Market, etc.

Para hacer uso de este paquete, deberá importarlo de la siguiente manera:

aprendiendo informatica paso a paso
importar scipy.io como sio

Para obtener información completa sobre el subpaquete, puede consultar el documento oficial en Archivo IO .

Esto nos lleva al final de este Tutorial de ciencia ficción. Espero que hayas entendido todo claramente. Asegúrate de practicar tanto como puedas .

Tienes una pregunta para nosotros? Por favor, menciónelo en la sección de comentarios de este blog “SciPy Tutorial” y nos comunicaremos con usted lo antes posible.

Para obtener un conocimiento profundo de Python junto con sus diversas aplicaciones, puede inscribirse en Live con soporte 24/7 y acceso de por vida.