One of Python’s strengths lies in the presence of a vast ensemble of libraries associated with this programming language. The community of developers who have formed around Python leads to profit from the contributions of others and the resulting ecosystems of incredible richness. Originally dedicated to scientific calculation but exploited well beyond the world of research, NumPy is a good example of a well-thought-out tool that nevertheless preserves the accessibility of Python.

What is NumPy?

NumPy is a library in the Python programming language that performs calculations on tables (in English, arrays), soit de vastes volumes de chiffres. This library proposes “standard” representations of tabulated numerical data.

Python structures

At its core, Python contains rich demonstration structures:

  • forest ” tuples “, c’est-à-dire des séquences d’éléments hétérogènes immuables (on ne peut les mettre à jour) ;
  • ensembles (sets) qui sont des collections non ordonnées d’objets unique et immuables;
  • les listes pour enumérer des collections d’objets ordonnées;
  • les intervals (range), ce sont des séquences avec une valeur d’arrivée obligatoire et qui peuvent aussi integrador une valeur de départ et une valeur de pas;
  • des dictionnaires où l’on s’associe des clés (the keys) uniques et immuables à des valeurs (values) susceptible d’évoluer…

Il reste Que de Telles structures ne sont pas idéales pour les calculus à haute performance. NumPy a donc été créé dans un tel but : facilitaire les opérations rapides sur des tableaux volumeux.

Comment NumPy at-il été créé ?

It’s an American researcher, Travis Oliphant, who created NumPy at the beginning of the 2000s, with the aim of defining a structure of data facilitating calculations on tables.

L’Ambition de Oliphant était de pouvoir marier deux bibliothèques de calcul apparées aupuravan :

  • Numeric, qui avait été created en 1995, proposait already de power to manipulate des tableaux de chiffres en Python. Numeric was created by several developers, including programmer Jim Hugunin, but also Konrad Hinsen, a CNRS researcher;
  • Numarray (2001), qui était l’œuvre de trois chercheurs du Space Telescope Science Institute, an organization founded by NASA: Peter Greenfield, Rick White, and Todd Miller. Their ambition was to help analyze the vast volumes of data transmitted by the Hubble Space Telescope.

Numeric avait été codé en langage C à des fins d’efficacy, alors que Numarray avait été écrit intégralement en Python. Il en a résulté que Numarray, bien que plus aisé à gérer, opérait plus lentement que Numeric. De ce fait, il existait une tension entre les partisans de ces deux approches dans le monde scientifique.

Durant un atelier collaboratif, les développeurs de Numeric et Numarray se sont posé la question : pourrait-on dispose d’une seule bibliothèque qui embrasserait ces deux modèles et même les surpasserait?

Travis Oliphant, a young professor at the University of Utah, a colossal entrepreneur who supports the library, who christened NumPy, risks disrupting his university career. NumPy is authored in Python. However, some éléments nécessitant un calcul fort rapide ont été écrits en C ou en C++.

NumPy was ready in 2005. On arrival, I was surprised at the number of functions offered by NumPy, but also by the flexibility of its tools, especially if you use an interface like Jupiter laptop, et enfin par la rapidité d’operation. Travis Oliphant undertook a work of conviction to ensure that his tool was widely accepted by the Python scientific community – something that involved those interested in adapting programs developed in Numeric or Numarray.

Et donc, NumPy s’est peu à peu imposé comme le standard pour ce qui est des calculus sur des tableaux. The NumPy library is integrated with open source and is available from the Python developer’s numpy.org website.

A model of memory management

Gaël Varoquaux, Director of Recherche à l’Inria, explained that NumPy features: “ One of the reasons why NumPy has so much success is that it matches in a well-defined way to access memory and allows you to share memory between different digital tools without worrying about management. de cette memoire. ” In other words, with NumPy, the memory can be manipulated for numerical calculation, without having to deal with such questions as ” où se trouve une partion de mémoire particulier “, ” laquelle vient d’être liberée “, ” laquelle n’est pas libre “you” quel bout de mémoire correspond à quoi etc.

Python agit ainsi à la base pour les objets qu’il manipulate, et Numpy applies cette approche à de grands tableaux de chiffres que l’on peut transmissar à des librairies scientifiques. Pour prendre une analogie: si je donne un numéro de téléphone d’une personne à quelqu’un d’autre, je ne fonfertore pas la personne, mais son adresse. Likewise, the idea of ​​a tool such as NumPy is not to copy information but to transfer pointers relative to values “, represented by Gaël Varoquaux.

Comment out a NumPy feature?

The NumPy package consists of:

  • la structure de tableau (array) de NumPy connue sous le nom de tableau Numpy à N dimensions ;
  • des opérations mathématiques associéses : exponential, sinus, tools statistics… ;
  • des fonctions de manipulation des éléments d’un tableau.

A NumPy tableau is a multidimensional ensemble of regular elements. Il est characterized d’une part, par le type d’éléments contenus.

A NumPy tableau can contain all kinds of elements: dates, booleans, complex numbers… However, each tableau cannot contain only one and the same type of element. Par exemple, nous pourrions avoir un tableau de 10,000 nombres flottants à 32 bits, et nous pourrions donc dès le départ quel est l’espace mémoire exact utiliséd.

Un tableau NumPy peut avoir n’importe quelle dimension, mais celle-ci doit être clairement spécificée. Ainsi, dans le cas du tableau de 10,000 nombres préviously évoqué, la forme pourrait être 10 lignes x 1,000 colonnes, 20 x 500, 100 x 100…

Un autre élément important qu’il faut definir est l’incrément (step, en anglais) qui permet de passer d’un cipher à l’autre. NumPy table storage is defined by two main attributes:

  • for me (form) : la forme de l’array. For example, (8,8) defines a table of two dimensions of 8 rows and 8 columns. (4, 4, 4) definirait un tableau trimensionnel ;
  • pass (step by step) : le nombre d’octes qu’il faut “sauter” (passer) en mémoire pour acceder à l’élément suivant. For example, in table (8,8). step by step serait de (8,1), soit 8 octets to evaluate the next line and 1 octet to evaluate the next column.

Fundamentally, nous pourrions dire qu’un tableau NumPy décrit un ou plusieurs blocs de données stockés dans une mémoire informatique. The result is an extremely simple manipulation of the elements of a tableau, and the possibility of applying numerical operations to them.

Le code est simple d’usage comme le montre cet exemple où l’on élève au carré une série de nombres :

>>> import numpy

>>> a = numpy array ([2, 4, 6, 8])

>>> a**2

array ([4, 16, 36, 64])

Tables and matrices

NumPy actually introduces two new types of cash to Python:

  • tables (arrays) qui peuvent avoir toutes sortes de dimensions;
  • les matrices qui ont la forme de tableaux mais n’ont que deux dimensions et vont beneifare des mathématiques propres au calcul matriciel, soit l’algèbre linéaire.

Pour mémoire, linear algebra operates on the concepts of lines, planes, vector spaces… Et donc, if you ask yourself the question: you can use Numpy to manipulate matrices, the answer is yes: NumPy proposes the structure np.matrix et sait gérer l’algèbre linéaire with respect to aux matrices.

What to use NumPy?

Nous l’avons vu, NumPy sert au calcul numérique. Et comme on trouve du calcul numérique sous les formes les plus diverses, NumPy est utilisé dans de très nombreux domaines. NumPy programs are unnamed things, as well as videos for spatial exploration. They include:

  • la manipulation d’images;
  • l’analyse de big data ;
  • meteorology;
  • traffic forecast;
  • les calculus de déformation physique de structures;
  • Les Applications de Climatologie;
  • l’imagerie médicale…

Qui s’en sert?

Grâce à l’étendue de ses fonctions, NumPy has been widely accepted by the scientific community, dans les laboroires comme dans les academies. Comme NumPy disposes of numerous modules of scientific calculation, it has attracted the researchers of this milieu and it has developed a veritable NumPy ecosystem, notably in research and experimental mathematics. However, NumPy is also mis à profit dans l’industrie. Il aide notably à la simulation numérique de nouveaux produits et materiaux pouvant implicante des parametres physicales complexes. Many websites resort to NumPy for data analysis. Ainsi, assez souvent, lorsqu’un site pratique des recomendations d’achat, les calculus numériques sous-jacents ont été réalisés thanks to NumPy.

What are the advantages and disadvantages of NumPy?

The advantage of NumPy is to allow, in the logic of Python, an interactive approach, which makes its usage analogous to that of a calculator. Et à l’instar de Python, il produit un code prepre, d’une bonne clarté y compris pour le noninitié, et facile à étendre.

La question est souvent posée : si l’on souhaite proceder à des calculus mathématiques, pourquoi acceptor NumPy plutôt que Pandas? Pour faire simple, l’interface de Pandas est conviviale, mais NumPy est bien plus rapide, en particulier sur de vastes volumes de données.

En revanche, NumPy is not well adapted to the manipulation of data of irregular types. Si l’on est sensible à cet aspect, Pandas pourra sembler plus appropriate. Another disadvantage of NumPy is that it is not designed to operate easily on graphics cards (GPUs), because these cells operate on their own memories. De ce fait, d’autres librairies similaires ont pris leur essor dans cet environnement, notably Jax qu’a développé Google za artificielle intelligence.

Comment apprendre à s’en servir ?

Are you planning to use Data Scientist for NumPy? Tout à fait, si l’on est disponible à se kolishniy aux arcanes de ce langage. La Communauté NumPy offers divers outils d’apprentissage. Le site numpy.org offers de prendre par la main le beginner Avec de très nombreuses initiations. On pourra également consult le site Scipy Lectures Notes qui a l’avantage de couvrir aussi bien l’initiation à NumPy qu’à Python ou à d’autre bibliothèques telles que Matplotlib. Seul souci : ces diverse initiations sont en anglais. However, there are diverse trainings accessible in French, notably on YouTube.

Travis Oliphant was getting a real guide to exclusive NumPy public training on Amazon, more to get the uniqueness in English and get the price if it can be too much.

What are similar tools?

Before the appearance of NumPy, it was the Fortran language that was prized by the scientific community and in spite of its age and difficulty in learning, it conserved a certain popularity.

De même, historically, c’est l’outil MATLAB qui a été particulier prisé en la matière. Il a été le premier à proposer un environnement de calcul de haut niveau et conserve une base d’utilisateurs importante. It is the same for the Mathematica software published by Wolfram Research in 1988.

In the universe of Python, the alternative essence is the language Jax de Google, more so that Dask qui s’appuie sur NumPy et favorise les calculus hors mémoire pour des tableaux de taille particulier volumineuse.