Puedes compartir tus conocimientos mejorándolos ( ¿cómo? ) Según las recomendaciones de los proyectos correspondientes .
NumPy | ||
![]() | ||
![]() | ||
Fecha de la primera versión | 1995 | |
---|---|---|
Desarrollador | comunidad | |
Última versión | 1.20.3 (10 de mayo de 2021) | |
Escrito en | Python , C y Fortran | |
Sistema de explotación | Multiplataforma | |
Licencia | BSD 3-cláusulas ( d ) | |
Sitio web | numpy.org | |
NumPy es una biblioteca para el lenguaje de programación Python , destinada a manejar matrices o matrices multidimensionales, así como funciones matemáticas que operan en estas matrices.
Más precisamente, esta biblioteca de software libre y de código abierto proporciona múltiples funciones que permiten, en particular, crear una matriz directamente desde un archivo o, por el contrario, guardar una matriz en un archivo y manipular vectores , matrices y polinomios .
NumPy es la base de SciPy , una agrupación de bibliotecas de Python en torno a la informática científica.
El lenguaje de programación Python no fue diseñado originalmente para el cálculo numérico . Sin embargo, llamó la atención de la comunidad científica y técnica desde el principio.
En 1995, se fundó el Grupo de Interés Especial (SIG) matrix-sig con el objetivo de definir un paquete de computación matricial . Entre sus miembros, Guido van Rossum , diseñador y desarrollador de Python, ha ampliado su sintaxis , y en particular, la sintaxis de indexación, con el fin de facilitar el cálculo de arrays. Jim Fulton hizo una primera implementación de un paquete de matriz, luego Jim Hugunin lo mejoró y lo llamó Numeric, también conocido como "extensiones numéricas de Python" o "NumPy".
Hugunin, un estudiante graduado del Instituto de Tecnología de Massachusetts (MIT) se unió a la Corporación para Iniciativas de Investigación Nacional (CNRI) en 1997 para trabajar en JPython , dejando a Paul Dubois del Laboratorio Nacional Lawrence Livermore (LLNL) para hacerse cargo del mantenimiento . Otros contribuyentes tempranos incluyen a David Ascher, Konrad Hinsen y Travis Oliphant.
Se ha escrito un nuevo paquete llamado Numarray para reemplazar a Numeric de una manera más flexible. Pero, como Numeric, ahora está obsoleto. Sus operaciones eran más rápidas que Numeric para tablas grandes, pero más lentas para tablas pequeñas. Entonces, durante un tiempo, los dos paquetes se usaron en paralelo para diferentes casos de uso. La última versión de Numeric (v24.2) se lanzó el 11 de noviembre de 2005, mientras que la última versión de numarray (v1.5.2) se lanzó el 24 de agosto de 2006.
Parecía necesario integrar Numeric en la biblioteca estándar de Python, pero Guido van Rossum decidió que el código no se podía mantener tal como estaba.
A principios de 2005, Travis Oliphant, desarrollador de NumPy, quería unificar la comunidad en torno a un solo paquete de matriz y portó la funcionalidad de Numarray a Numeric, lanzando el resultado como NumPy 1.0 en 2006. Este nuevo proyecto era parte de SciPy .
Para no instalar toda la biblioteca SciPy con el único propósito de acceder a un objeto de matriz, este nuevo paquete ha sido separado y llamado NumPy.
La versión 1.5.0 de NumPy en 2011 admitió Python 3. El desarrollo de una implementación de la API de NumPy para PyPy ha comenzado, pero aún no es totalmente compatible.
NumPy se dirige a la CPython implementación de referencia de Python, un sin optimizar el código de bytes intérprete . Los algoritmos matemáticos escritos para esta versión de Python suelen ser mucho más lentos que sus contrapartes compiladas . NumPy resuelve el problema de la lentitud en parte al proporcionar matrices multidimensionales con funciones y operadores que trabajan de manera eficiente en estas matrices. Su uso requiere la reescritura de parte del código fuente y, en particular, los bucles internos.
El uso de NumPy en Python proporciona una funcionalidad comparable a MATLAB porque ambos se interpretan. Ambos permiten al usuario escribir programas rápidos al realizar operaciones en matrices o matrices en lugar de escalares . MATLAB tiene una gran cantidad de kits de herramientas adicionales como Simulink . NumPy, por otro lado, está intrínsecamente integrado con Python, un lenguaje de programación más nuevo y completo , y hay bibliotecas de Python adicionales disponibles.
Por ejemplo, SciPy es una biblioteca que agrega una funcionalidad similar a la de MATLAB. Matplotlib, es otra biblioteca que proporciona una funcionalidad de representación gráfica similar a MATLAB. Finalmente, NumPy se basa en BLAS y LAPACK para realizar cálculos de álgebra lineal eficientes .
Los objetos Python de la biblioteca de visión por computadora OpenCV, ampliamente utilizada , utilizan matrices NumPy para almacenar y procesar datos. Dado que las imágenes se representan simplemente como matrices tridimensionales, indexar, cortar o enmascarar con otras matrices son formas muy efectivas de acceder a píxeles específicos en esa imagen.
Una matriz NumPy, una estructura de datos universal en OpenCV, simplifica la programación y depuración de imágenes, información extraída, kernels ...,
Numpy trae la estructura de datos ndarray ( matrices multidimensionales) a python. Al contrario de la estructura de lista de python, esta estructura no es dinámica y el tipo de sus elementos debe ser homogéneo.
>>> import numpy as np >>> x = np.array([1, 2, 3]) >>> x array([1, 2, 3]) >>> y = np.arange(10) >>> y array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])