Movatterモバイル変換


[0]ホーム

URL:


Aller au contenu
Wikipédial'encyclopédie libre
Rechercher

NumPy

Un article de Wikipédia, l'encyclopédie libre.

Cet article est uneébauche concernant unlogiciel libre.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations desprojets correspondants.

NumPy
Logo.
Image illustrative de l’article NumPy

Date de première versionVoir et modifier les données sur Wikidata
Développeurcommunauté[pas clair]
Dernière version2.2.3 ()[1]Voir et modifier les données sur Wikidata
Écrit enPython,C etFortranVoir et modifier les données sur Wikidata
Système d'exploitationMultiplate-forme
LicenceBSD 3-clauses[2]Voir et modifier les données sur Wikidata
Site webnumpy.orgVoir et modifier les données sur Wikidata
modifier 

NumPy est une bibliothèque pour le langage de programmationPython, destinée à manipuler desmatrices ou tableaux multidimensionnels ainsi que des fonctions mathématiques opérant sur ces tableaux.

Plus précisément, cettebibliothèque logiciellelibre etopen 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 desvecteurs, matrices etpolynômes.

NumPy est la base deSciPy, regroupement de bibliothèques Python autour du calcul scientifique[3].

Historique

[modifier |modifier le code]

Le langage de programmation Python n'a pas été conçu à l'origine pour lecalcul 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 decalcul matriciel. Parmi ses membres,Guido van Rossum, concepteur et développeur de Python, a étendu sasyntaxe, et en particulier, la syntaxe d'indexation, afin de faciliter le calcul des tableaux. Une première implémentation d'unpaquetage matriciel a été réalisée par Jim Fulton, puis améliorée par Jim Hugunin et appelée Numeric, également connue sous le nom de "Numerical Python extensions" ou "NumPy".

Hugunin, un étudiant diplômé duMassachusetts Institute of Technology (MIT) a rejoint la Corporation for National Research Initiatives (CNRI) en 1997 pour travailler surJPython, laissant Paul Dubois duLaboratoire National Lawrence Livermore (LLNL) prendre la relève de lamaintenance. 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 lentes 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.2) a été publiée le 11 novembre 2005, tandis que la dernière version de Numarray (v1.5.2) a été publiée le 24 août 2006.

Il semblait nécessaire d'intégrer Numeric dans la bibliothèque standard de Python, mais Guido van Rossum a décidé que le code n'était pas maintenable en l'état.

Au début de l'année 2005, Travis Oliphant, développeur de NumPy, a voulu unifier la communauté autour d'un seul package de tableaux et a porté les fonctionnalités de Numarray vers Numeric, publiant le résultat sous le nom de NumPy 1.0 en 2006. Ce nouveau projet faisait partie deSciPy.

Afin de ne pas installer la totalité de la librairie SciPy à seule fin d'accéder à un objet tableau, ce nouveau paquet a été séparé et appelé NumPy.

La version 1.5.0 de NumPy en 2011 a pris en charge Python 3. Le développement d'une implémentation de l'API NumPy pourPyPy a démarré mais n'est pas encore totalement compatible.

Fonctionnalités

[modifier |modifier le code]

NumPy cible l'implémentation de référenceCPython de Python,interpréteur non optimisé debytecode. Lesalgorithmes mathématiques écrits pour cette version de Python sont souvent beaucoup plus lents que leurs équivalents qui ont étécompilés. NumPy résout le problème de la lenteur en partie en fournissant des tableaux multidimensionnels avec les fonctions et opérateurs qui travaillent efficacement sur ces tableaux. Leur utilisation nécessite la réécriture d'une partie ducode source, et notamment, les boucles internes.

L'utilisation de NumPy dans Python offre des fonctionnalités comparables à celles deMATLAB car ils sont tous deux interprétés. Ils permettent tous deux à l'utilisateur d'écrire des programmes rapides en réalisant des opérations sur des tableaux ou des matrices à la place descalaires. MATLAB dispose d'un grand nombre de boîtes à outils supplémentaires telles queSimulink. NumPy, quant à lui, est intrinsèquement intégré à Python,langage de programmation plus récent et complet. De plus, desbibliothèques Python complémentaires sont disponibles.

Par exemple,SciPy est une bibliothèque qui ajoute des fonctionnalités similaires à celles de MATLAB.Matplotlib, est une autre bibliothèque qui fournit des fonctionnalités dereprésentation graphique de type MATLAB. Enfin, NumPy s'appuie surBLAS etLAPACK pour effectuer des calculs efficaces d'algèbre linéaire.

Les objets Python de la bibliothèque devision par ordinateurOpenCV, largement utilisée, utilisent des tableaux NumPy pour stocker et traiter les données. Comme les images sont simplement représentées sous forme de tableaux tridimensionnels, l'indexation, le découpage ou lemasquage avec d'autres tableaux sont des moyens très efficaces d'accéder à despixels spécifiques de cette image.

Un tableau NumPy,structure de données universelle dans OpenCV, simplifie la programmation et le débogage pour les images, les informations extraites, lesnoyaux ...,

Exemples

[modifier |modifier le code]

Création de tableau

[modifier |modifier le code]

Numpy apporte lastructure de données ndarray (Tableaux multidimensionnels) à python. Contrairement a la structure de liste de python, cette structure n'est pas dynamique, et le type de ses éléments doit être homogène[4].

>>>importnumpyasnp>>>x=np.array([1,2,3])>>>xarray([1,2,3])>>>y=np.arange(10)>>>yarray([0,1,2,3,4,5,6,7,8,9])

Opérations de base

[modifier |modifier le code]
>>>a=np.array([1,2,3,6])>>>b=np.linspace(0,2,4)>>>c=a-b>>>carray([1.,1.33333333,1.66666667,4.])>>>a**2array([1,4,9,36])

Fonctions universelles

[modifier |modifier le code]
>>>a=np.linspace(-np.pi,np.pi,100)>>>b=np.sin(a)>>>c=np.cos(a)

Algèbre linéaire

[modifier |modifier le code]
>>>fromnumpy.randomimportrand>>>fromnumpy.linalgimportsolve,inv>>>a=np.array([[1,2,3],[3,4,6.7],[5,9.0,5]])>>>a.transpose()array([[1.,3.,5.],[2.,4.,9.],[3.,6.7,5.]])>>>inv(a)array([[-2.27683616,0.96045198,0.07909605],[1.04519774,-0.56497175,0.1299435],[0.39548023,0.05649718,-0.11299435]])>>>b=np.array([3,2,1])>>>solve(a,b)# résout ax = barray([-4.83050847,2.13559322,1.18644068])>>>c=rand(3,3)# crée une matrice 3x3 au hasard>>>carray([[3.98732789,2.47702609,4.71167924],[9.24410671,5.5240412,10.6468792],[10.38136661,8.44968437,15.17639591]])>>>np.dot(a,c)# multiplication de matricesarray([[53.61964114,38.8741616,71.53462537],[118.4935668,86.14012835,158.40440712],[155.04043289,104.3499231,195.26228855]])>>>a@c# depuis Python 3.5 et NumPy 1.10, équivalent à np.dot(a, c)array([[53.61964114,38.8741616,71.53462537],[118.4935668,86.14012835,158.40440712],[155.04043289,104.3499231,195.26228855]])

Tensors

[modifier |modifier le code]
>>>M=np.zeros(shape=(2,3,5,7,11))>>>T=np.transpose(M,(4,2,1,3,0))>>>T.shape(11, 5, 3, 7, 2)

Notes et références

[modifier |modifier le code]
  1. a etb« Release 2.2.3 »,(consulté le)
  2. « https://github.com/numpy/numpy/blob/master/LICENSE.txt »(consulté le)
  3. « Scientific computing tools for Python — SciPy.org », surwww.scipy.org(consulté le)
  4. StefanVan Der Walt, S. ChrisColbert et GaëlVaroquaux, « The NumPy array: a structure for efficient numerical computation »,Computing in Science & Engineering,vol. 13,no 2,‎,p. 22–30(ISSN 1521-9615,DOI 10.1109/MCSE.2011.37,lire en ligne, consulté le)

Voir aussi

[modifier |modifier le code]
  • SciPy : librairie pour le calcul scientifique.

Liens externes

[modifier |modifier le code]

Sur les autres projets Wikimedia :

v ·m
Interfaces graphiques
Bibliothèques scientifiques
Mathématiques etscience des données
Apprentissage automatique
Traitement d'images
Traitement automatique des langues
Frameworksweb
Articles liés
Ce document provient de « https://fr.wikipedia.org/w/index.php?title=NumPy&oldid=223160311 ».
Catégories :
Catégories cachées :

[8]ページ先頭

©2009-2025 Movatter.jp