NumPy est une bibliothèque pour langage de programmation Python, destinée à manipuler des matrices ou tableaux multidimensionnels ainsi que des fonctions mathématiques opérant sur ces tableaux.
Plus précisément, cette bibliothèque logicielle libre et open source fournit de multiples fonctions permettant notamment de créer directement un tableau depuis un fichier ou au contraire de sauvegarder un tableau dans un fichier, et manipuler des vecteurs, matrices et polynômes.
NumPy est la base de SciPy, regroupement de bibliothèques Python autour du calcul scientifique.
Le langage de programmation Python n'a pas été conçu à l'origine pour le calcul numérique. Cependant, il a très tôt attiré l'attention de la communauté scientifique et technique.
En 1995, le groupe d'intérêt spécial (SIG) matrix-sig a été fondé dans le but de définir un paquetage de calcul matriciel. Parmi ses membres, Guido van Rossum, concepteur et développeur de Python, a étendu sa syntaxe, et en particulier, la syntaxe d'indexation, afin de faciliter le calcul des tableaux. Une première implémentation d'un paquetage matriciel a été réalisée par Jim Fulton, puis amélioré par Jim Hugunin et appelée Numeric, également connu sous le nom de "Numerical Python extensions" ou "NumPy".
Hugunin, un étudiant diplômé du Massachusetts Institute of Technology (MIT) a rejoint la Corporation for National Research Initiatives (CNRI) en 1997 pour travailler sur JPython, laissant Paul Dubois du Laboratoire National Lawrence Livermore (LLNL) prendre la relève de la maintenance. Parmi les autres premiers contributeurs, citons David Ascher, Konrad Hinsen et Travis Oliphant.
Un nouveau paquet appelé Numarray a été écrit pour remplacer Numeric de manière plus flexible. Mais, comme Numeric, il est désormais obsolète. Ses opérations étaient plus rapides que Numeric pour les grands tableaux, mais plus lent pour les petits. Ainsi, pendant un certain temps, les deux paquets ont été utilisés en parallèle pour différents cas d'utilisation. La dernière version de Numeric (v24.