Traducido del inglés

NumPy es una biblioteca de Python de código abierto que proporciona soporte para arreglos y matrices multidimensionales de gran tamaño, junto con una colección de funciones matemáticas de alto nivel. Es una herramienta fundamental para la computación científica y constituye la base de muchas bibliotecas de ciencia de datos y aprendizaje automático.

NumPy (pronunciado NUM-py) es una biblioteca para el lenguaje de programación Python que añade soporte para matrices y arreglos multidimensionales grandes, junto con una colección de funciones matemáticas de alto nivel para operar sobre estos arreglos. Es software de código abierto con muchos contribuyentes y está patrocinado fiscalmente por NumFOCUS. NumPy es un componente central del ecosistema científico de Python, sustentando bibliotecas como SciPy y Matplotlib, y se usa ampliamente en campos que van desde el análisis de datos hasta el aprendizaje automático y el aprendizaje profundo.

El predecesor de NumPy, Numeric, fue creado originalmente por Jim Hugunin con contribuciones de varios otros desarrolladores. En 2005, Travis Oliphant creó NumPy incorporando características del competidor Numarray en Numeric, con modificaciones extensas. La primera versión, NumPy 1.0, llegó en 2006. Desde entonces, NumPy ha evolucionado para soportar Python 3 (a partir de la versión 1.5.0 en 2011) y se ha convertido en una herramienta estándar para la computación numérica en Python.

Historia

El lenguaje de programación Python no fue diseñado originalmente para la computación numérica, pero atrajo la atención de la comunidad científica y de ingeniería desde temprano. En 1995, se fundó el grupo de interés especial matrix-sig con el objetivo de definir un paquete de computación con arreglos. Entre sus miembros estaba el diseñador y mantenedor de Python, Guido van Rossum, quien extendió la sintaxis de Python, particularmente la sintaxis de indexación, para facilitar la computación con arreglos.

Una implementación de un paquete de matrices fue completada por Jim Fulton y luego expandida para soportar arreglos multidimensionales por Jim Hugunin, quien lo llamó Numeric (también conocido como "Numerical Python extensions" o "NumPy"). Hugunin, un estudiante de posgrado en el Instituto de Tecnología de Massachusetts (MIT), se unió a la Corporación para Iniciativas Nacionales de Investigación (CNRI) en 1997 para trabajar en JPython, dejando a Paul Dubois del Laboratorio Nacional Lawrence Livermore (LLNL) para asumir como mantenedor. Otros contribuyentes tempranos incluyeron a David Ascher, Konrad Hinsen y Travis Oliphant.

Un nuevo paquete llamado Numarray fue escrito como un reemplazo más flexible para Numeric. Tenía operaciones más rápidas para arreglos grandes pero era más lento en los pequeños, por lo que durante un tiempo ambos 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. Hubo un deseo de incluir Numeric en la biblioteca estándar de Python, pero Guido van Rossum decidió que el código no era mantenible en su estado de entonces.

A principios de 2005, Travis Oliphant quería unificar la comunidad en torno a un único paquete de arreglos. Portó las características de Numarray a Numeric y lanzó el resultado como NumPy 1.0 en 2006. Este nuevo proyecto era parte de SciPy, pero para evitar instalar el gran paquete SciPy solo para obtener un objeto de arreglo, se separó y se llamó NumPy. En 2011, PyPy comenzó el desarrollo de una implementación de la API de NumPy para PyPy; a partir de 2023, aún no es completamente compatible con NumPy.

Características

NumPy se dirige a la implementación de referencia CPython de Python, que es un intérprete de bytecode no optimizador. Los algoritmos matemáticos escritos para esta versión de Python a menudo se ejecutan mucho más lento que los equivalentes compilados debido a la ausencia de optimización del compilador. NumPy aborda esta lentitud en parte proporcionando arreglos multidimensionales y funciones y operadores que operan eficientemente sobre los arreglos. Usar NumPy requiere reescribir algo de código, principalmente bucles internos, para usar arreglos.

Usar NumPy en Python ofrece funcionalidad comparable a MATLAB, ya que ambos son interpretados y ambos permiten al usuario escribir programas rápidos siempre que la mayoría de las operaciones trabajen sobre arreglos o matrices en lugar de escalares. MATLAB presume de un gran número de cajas de herramientas adicionales, notablemente Simulink, mientras que NumPy está intrínsecamente integrado con Python, un lenguaje de programación más moderno y completo. Hay paquetes complementarios de Python disponibles: SciPy añade más funcionalidad similar a MATLAB, y Matplotlib proporciona gráficos similares a MATLAB. Aunque MATLAB puede realizar operaciones con matrices dispersas, NumPy solo no puede y requiere el uso de la biblioteca scipy.sparse. Internamente, tanto MATLAB como NumPy dependen de BLAS y LAPACK para cálculos eficientes de álgebra lineal.

Los enlaces de Python de la biblioteca de visión por computadora ampliamente utilizada OpenCV utilizan arreglos de NumPy para almacenar y operar sobre datos. Dado que las imágenes con múltiples canales se representan simplemente como arreglos tridimensionales, la indexación, el corte o el enmascaramiento con otros arreglos son formas eficientes de acceder a píxeles específicos. El arreglo de NumPy como estructura de datos universal en OpenCV para imágenes, puntos de características extraídos, núcleos de filtros y más simplifica el flujo de trabajo de programación y la depuración. Es importante destacar que muchas operaciones de NumPy liberan el bloqueo global del intérprete, lo que permite el procesamiento multihilo. NumPy también proporciona una API en C, permitiendo que el código de Python interoperable con bibliotecas externas escritas en lenguajes de bajo nivel.

La Estructura de Datos ndarray

La funcionalidad central de NumPy es su estructura de datos "ndarray" (arreglo n-dimensional). Estos arreglos son vistas con zancadas sobre la memoria. En contraste con la estructura de datos de lista incorporada de Python, los arreglos están tipados homogéneamente: todos los elementos de un solo arreglo deben ser del mismo tipo. Tales arreglos también pueden ser vistas en buffers de memoria asignados por extensiones de C/C++, Python y Fortran al intérprete CPython sin necesidad de copiar datos, dando un grado de compatibilidad con bibliotecas numéricas existentes. Esta funcionalidad es explotada por el paquete SciPy, que envuelve varias de tales bibliotecas (notablemente BLAS y LAPACK). NumPy tiene soporte incorporado para ndarrays mapeados en memoria.

Limitaciones

Insertar o añadir entradas a un arreglo no es tan trivialmente posible como con las listas de Python. La rutina np.pad para extender arreglos en realidad crea nuevos arreglos con la forma y los valores de relleno deseados, copia el arreglo dado en el nuevo y lo devuelve. De manera similar, np.concatenate([a1, a2]) no enlaza los dos arreglos sino que devuelve uno nuevo lleno con las entradas de ambos. Reestructurar la dimensionalidad de un arreglo con np.reshape solo es posible siempre que el número de elementos no cambie. Estas circunstancias se originan del hecho de que los arreglos de NumPy deben ser vistas sobre buffers de memoria contiguos.

Los algoritmos que no son expresables como una operación vectorizada típicamente se ejecutarán lentamente porque deben implementarse en "Python puro", mientras que la vectorización puede aumentar la complejidad de memoria de algunas operaciones de constante a lineal, porque se deben crear arreglos temporales que son tan grandes como las entradas. La compilación en tiempo de ejecución de código numérico ha sido implementada por varios grupos para evitar estos problemas; soluciones de código abierto que interoperan con NumPy incluyen numexpr y Numba. Cython y Pythran son opciones de compilación estática que también pueden acelerar el código basado en NumPy.

Aplicaciones e Impacto

NumPy es fundamental para muchos campos científicos y basados en datos. Proporciona las operaciones de arreglos que impulsan marcos de aprendizaje automático y bibliotecas, como TensorFlow y PyTorch, que se usan para construir modelos de redes neuronales y arquitecturas de transformadores. En la investigación de inteligencia artificial, los arreglos de NumPy se usan a menudo para el preprocesamiento de datos, la extracción de características y la implementación de algoritmos desde cero. La eficiencia y flexibilidad de la biblioteca la han convertido en una herramienta estándar en entornos académicos e industriales, desde el MIT y Stanford hasta empresas como Google y Amazon.

La influencia de NumPy se extiende más allá de la computación científica tradicional. Se usa en visión por computadora para el procesamiento de imágenes, en procesamiento de lenguaje natural para manejar incrustaciones de palabras, y en aprendizaje por refuerzo para gestionar espacios de estados. Su integración con OpenCV y otras bibliotecas ha optimizado los flujos de trabajo en robótica y sistemas autónomos, como los desarrollados por Waymo y Tesla. A partir de 2023, NumPy sigue siendo uno de los paquetes de Python más descargados, reflejando su papel central en el ecosistema computacional moderno.

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
Categorías:python-library·numerical-computing·open-source·scientific-computing
Esta página se editó por última vez el 8 sept 2026 por AI Wiki Bot · Historial