0% ont trouvé ce document utile (0 vote)
2 vues25 pages

Numpy Core Guide

Ce document est un guide complet sur NumPy, une bibliothèque essentielle pour le calcul scientifique en Python, couvrant des sujets tels que la création et la manipulation de tableaux, les opérations mathématiques et statistiques, ainsi que l'entrée/sortie. Il fournit des exemples pratiques pour illustrer les fonctionnalités de NumPy, y compris la création de tableaux, la manipulation de la forme, l'indexation et la sélection, ainsi que des opérations sur les tableaux. Le document est structuré en sections détaillées, chacune abordant des aspects spécifiques de l'utilisation de NumPy.

Transféré par

LUCAS KONAN
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues25 pages

Numpy Core Guide

Ce document est un guide complet sur NumPy, une bibliothèque essentielle pour le calcul scientifique en Python, couvrant des sujets tels que la création et la manipulation de tableaux, les opérations mathématiques et statistiques, ainsi que l'entrée/sortie. Il fournit des exemples pratiques pour illustrer les fonctionnalités de NumPy, y compris la création de tableaux, la manipulation de la forme, l'indexation et la sélection, ainsi que des opérations sur les tableaux. Le document est structuré en sections détaillées, chacune abordant des aspects spécifiques de l'utilisation de NumPy.

Transféré par

LUCAS KONAN
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

NumPy Core

Guide complet avec exemples

Toutes les fonctions essentielles expliquées et illustrées

Création • Manipulation • Mathématiques • Statistiques • I/O


Table des matières
1. Introduction à NumPy
2. Création de tableaux
3. Manipulation de la forme
4. Indexation et sélection
5. Opérations mathématiques
6. Fonctions trigonométriques
7. Statistiques et agrégations
8. Tri et recherche
9. Opérations sur les tableaux
10. Nombres complexes
11. Logique booléenne
12. Sauvegarde et chargement
1. Introduction à NumPy
NumPy (Numerical Python) est la bibliothèque fondamentale du calcul scientifique en Python. Elle
fournit un objet tableau multidimensionnel puissant appelé ndarray, ainsi que des routines
optimisées pour effectuer des opérations rapides sur ces tableaux.

Installation et importation
# Installation
pip install numpy

# Importation conventionnelle
import numpy as np

# Vérifier la version
print(np.__version__) # ex: 1.26.0

L'objet ndarray
Le ndarray est le coeur de NumPy. C'est un tableau N-dimensionnel homogène (tous les éléments
ont le même type). Ses attributs principaux sont :

Attribut Description Exemple

ndim Nombre de dimensions 2

shape Forme (tuple) (3, 4)

size Nombre total d'éléments 12

dtype Type des données float64

itemsize Taille en octets par élément 8

nbytes Taille totale en octets 96

import numpy as np

a = [Link]([[1, 2, 3], [4, 5, 6]])


print([Link]) # 2
print([Link]) # (2, 3)
print([Link]) # 6
print([Link]) # int64
print([Link]) # 8
2. Création de tableaux

[Link]() — Depuis une liste Python


Crée un tableau à partir d'une liste, d'un tuple ou de données imbriquées.
# Tableau 1D
a = [Link]([1, 2, 3, 4, 5])
print(a) # [1 2 3 4 5]

# Tableau 2D (matrice)
b = [Link]([[1, 2, 3],
[4, 5, 6]])
print([Link]) # (2, 3)

# Spécifier le type
c = [Link]([1, 2, 3], dtype=float)
print(c) # [1. 2. 3.]

# Tableau 3D
d = [Link]([[[1,2],[3,4]],[[5,6],[7,8]]])
print([Link]) # (2, 2, 2)

[Link]() / [Link]() / [Link]()


Créent des tableaux remplis de valeurs constantes.
# Tableau de zéros
z = [Link]((3, 4))
# [[0. 0. 0. 0.]
# [0. 0. 0. 0.]
# [0. 0. 0. 0.]]

# Tableau de uns
u = [Link]((2, 3), dtype=int)
# [[1 1 1]
# [1 1 1]]

# Tableau rempli d'une valeur


f = [Link]((3, 3), 7)
# [[7 7 7]
# [7 7 7]
# [7 7 7]]

# Variantes _like (même forme qu'un tableau existant)


a = [Link]([[1, 2], [3, 4]])
print(np.zeros_like(a)) # [[0 0] [0 0]]
print(np.ones_like(a)) # [[1 1] [1 1]]
print(np.full_like(a, 5)) # [[5 5] [5 5]]
[Link]() / [Link]() / [Link]()
Créent des séquences de valeurs numériques.
# arange : comme range() mais pour NumPy
[Link](10) # [0 1 2 3 4 5 6 7 8 9]
[Link](2, 10) # [2 3 4 5 6 7 8 9]
[Link](0, 1, 0.2) # [0. 0.2 0.4 0.6 0.8]

# linspace : N points entre a et b (inclus)


[Link](0, 1, 5) # [0. 0.25 0.5 0.75 1. ]
[Link](0, 10, 3) # [ 0. 5. 10. ]

# logspace : N points espacés logarithmiquement


[Link](0, 3, 4) # [ 1. 10. 100. 1000.]
# (10^0, 10^1, 10^2, 10^3)

Astuce : Utilisez linspace() plutôt que arange() quand vous avez besoin d'un nombre précis de points.

[Link]() / [Link]() / [Link]()


# Matrice identité
[Link](3)
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]

# Matrice identité (alias)


[Link](3) # identique à eye(3)

# Diagonale : vecteur -> matrice diagonale


[Link]([1, 2, 3])
# [[1 0 0]
# [0 2 0]
# [0 0 3]]

# Diagonale : matrice -> vecteur diagonal


m = [Link]([[1,2,3],[4,5,6],[7,8,9]])
[Link](m) # [1 5 9]

[Link]() / [Link] / [Link]


Créent des grilles de coordonnées utiles pour tracer des fonctions 2D.
# meshgrid : grille de coordonnées
x = [Link]([0, 1, 2])
y = [Link]([0, 1])
X, Y = [Link](x, y)
print(X)
# [[0 1 2]
# [0 1 2]]
print(Y)
# [[0 0 0]
# [1 1 1]]

# mgrid : syntaxe pratique


Y, X = [Link][0:3, 0:4]
# Y varie de 0 à 2, X de 0 à 3

# Utilisation typique : tracer Z = sin(X) + cos(Y)


x = [Link](-3, 3, 100)
y = [Link](-3, 3, 100)
X, Y = [Link](x, y)
Z = [Link](X) + [Link](Y)
3. Manipulation de la forme

reshape() / ravel() / flatten()


a = [Link](12)
# [ 0 1 2 3 4 5 6 7 8 9 10 11]

# reshape : change la forme (les données ne bougent pas)


b = [Link](3, 4)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]

# -1 : NumPy calcule automatiquement la dimension


c = [Link](2, -1) # (2, 6)
d = [Link](-1, 3) # (4, 3)

# ravel : aplatit en 1D (vue si possible)


e = [Link]() # [ 0 1 2 ... 11]

# flatten : aplatit en 1D (toujours une copie)


f = [Link]()

Info : ravel() retourne une vue (plus rapide), flatten() retourne une copie.

transpose() / swapaxes() / moveaxis()


a = [Link]([[1, 2, 3],
[4, 5, 6]])
# shape : (2, 3)

# Transposer : échange lignes et colonnes


b = a.T # ou [Link](a)
# [[1 4]
# [2 5]
# [3 6]]
# shape : (3, 2)

# swapaxes : échange deux axes


c = [Link](a, 0, 1) # identique à a.T ici

# moveaxis : déplace un axe vers une nouvelle position


a3d = [Link]((2, 3, 4)) # shape (2, 3, 4)
b3d = [Link](a3d, 0, -1) # shape (3, 4, 2)

squeeze() / expand_dims()
# squeeze : supprime les dimensions de taille 1
a = [Link]([[[1], [2], [3]]]) # shape (1, 3, 1)
b = [Link](a) # shape (3,)
# expand_dims : ajoute une dimension
a = [Link]([1, 2, 3]) # shape (3,)
b = np.expand_dims(a, 0) # shape (1, 3)
c = np.expand_dims(a, 1) # shape (3, 1)

# Utile pour le broadcasting


a = [Link]([1, 2, 3]) # shape (3,)
b = np.expand_dims(a, 0) # shape (1, 3)
c = np.expand_dims(a, 1) # shape (3, 1)
print(b + c)
# [[2 3 4]
# [3 4 5]
# [4 5 6]]

concatenate() / stack() / hstack() / vstack()


a = [Link]([[1, 2], [3, 4]])
b = [Link]([[5, 6], [7, 8]])

# concatenate : fusionne le long d'un axe existant


[Link]([a, b], axis=0)
# [[1 2] <- axe 0 : ajoute des lignes
# [3 4]
# [5 6]
# [7 8]]

[Link]([a, b], axis=1)


# [[1 2 5 6] <- axe 1 : ajoute des colonnes
# [3 4 7 8]]

# vstack : empile verticalement (axe 0)


[Link]([a, b]) # identique à concatenate axis=0

# hstack : empile horizontalement (axe 1)


[Link]([a, b]) # identique à concatenate axis=1

# stack : crée un NOUVEL axe


[Link]([a, b], axis=0) # shape (2, 2, 2)
[Link]([a, b], axis=1) # shape (2, 2, 2)

split() / hsplit() / vsplit()


a = [Link](12).reshape(3, 4)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]

# split : divise en parties égales (axe 0 par défaut)


parts = [Link](a, 3, axis=0) # 3 tableaux (1, 4)
# vsplit : coupe verticalement (en lignes)
top, bottom = [Link](a, [2]) # 2 premières lignes + reste

# hsplit : coupe horizontalement (en colonnes)


left, right = [Link](a, 2) # 2 colonnes + 2 colonnes
4. Indexation et sélection

Indexation de base et slicing


a = [Link]([10, 20, 30, 40, 50])

# Indexation simple
a[0] # 10 (premier élément)
a[-1] # 50 (dernier élément)
a[-2] # 40

# Slicing [début:fin:pas]
a[1:4] # [20 30 40]
a[::2] # [10 30 50] (un sur deux)
a[::-1] # [50 40 30 20 10] (inverser)

# Tableaux 2D
m = [Link](9).reshape(3, 3)
# [[0 1 2]
# [3 4 5]
# [6 7 8]]

m[1, 2] # 5 (ligne 1, colonne 2)


m[0, :] # [0 1 2] (toute la ligne 0)
m[:, 1] # [1 4 7] (toute la colonne 1)
m[1:, 1:] # [[4 5] [7 8]] (sous-matrice)

Indexation booléenne (masquage)


Permet de sélectionner des éléments selon une condition — très puissant !
a = [Link]([3, -1, 5, -2, 8, -4, 7])

# Créer un masque booléen


masque = a > 0
# [ True False True False True False True]

# Appliquer le masque
a[masque] # [3 5 8 7]

# Raccourci direct
a[a > 0] # [3 5 8 7]

# Conditions combinées
a[(a > 0) & (a < 6)] # [3 5]
a[(a < 0) | (a > 6)] # [-1 -2 8 -4 7]

# Modifier les éléments filtrés


a[a < 0] = 0
# [3 0 5 0 8 0 7]
where() / nonzero() / argwhere()
a = [Link]([1, -2, 3, -4, 5])

# where : choisir entre deux valeurs selon condition


[Link](a > 0, a, 0)
# [1 0 3 0 5] (remplace négatifs par 0)

[Link](a > 0, a, -a) # valeur absolue !


# [1 2 3 4 5]

# nonzero : indices des éléments non nuls


a = [Link]([0, 1, 0, 3, 0, 5])
[Link](a) # (array([1, 3, 5]),)

# argwhere : indices sous forme de tableau


[Link](a > 0)
# [[1]
# [3]
# [5]]

tile() / repeat() / roll()


# tile : répète le tableau en tuile
a = [Link]([1, 2, 3])
[Link](a, 3) # [1 2 3 1 2 3 1 2 3]
[Link](a, (2, 3)) # [[1 2 3 1 2 3 1 2 3]
# [1 2 3 1 2 3 1 2 3]]

# repeat : répète chaque élément


[Link](a, 3) # [1 1 1 2 2 2 3 3 3]
[Link](a, [1,2,3]) # [1 2 2 3 3 3]

# roll : décale circulairement


[Link](a, 1) # [3 1 2] (décale droite de 1)
[Link](a, -1) # [2 3 1] (décale gauche de 1)
5. Opérations mathématiques

Opérations élément par élément


a = [Link]([1, 2, 3, 4])
b = [Link]([10, 20, 30, 40])

# Opérateurs standards : élément par élément


a + b # [11 22 33 44]
a * b # [10 40 90 160]
a / b # [0.1 0.1 0.1 0.1]
a ** 2 # [ 1 4 9 16]
b % 3 # [1 2 0 1]

# Fonctions ufunc équivalentes


[Link](a, b) # [11 22 33 44]
[Link](a, b) # [10 40 90 160]
[Link](a, 2) # [ 1 4 9 16]
[Link](b, 3) # [1 2 0 1]

Info : Le broadcasting permet les opérations entre tableaux de formes différentes compatibles.

Broadcasting
NumPy peut opérer sur des tableaux de formes différentes si elles sont compatibles. Les règles :
deux dimensions sont compatibles si elles sont égales, ou si l'une d'elles est 1.
# Scalaire et tableau : scalaire broadcasté sur tout le tableau
a = [Link]([1, 2, 3])
a * 3 # [3 6 9]

# Vecteur ligne + vecteur colonne -> matrice


ligne = [Link]([[1, 2, 3]]) # shape (1, 3)
colonne = [Link]([[1], [2], [3]])# shape (3, 1)
ligne + colonne
# [[2 3 4]
# [3 4 5]
# [4 5 6]]

# Ajouter 10 à chaque ligne


m = [Link]((3, 4))
row_add = [Link]([1, 2, 3, 4]) # shape (4,)
m + row_add
# [[2. 3. 4. 5.]
# [2. 3. 4. 5.]
# [2. 3. 4. 5.]]

Fonctions mathématiques universelles (ufunc)


a = [Link]([0.25, 4.0, 9.0, 16.0])
# Racine carrée, carré, puissance
[Link](a) # [0.5 2. 3. 4. ]
[Link](a) # [ 0.0625 16. 81. 256.]
[Link](a) # racine cubique

# Exponentielle et logarithme
a = [Link]([1, np.e, np.e**2])
[Link](a) # [ 2.718 7.389 54.60] (e^a)
[Link](a) # [0. 1. 2.] (ln)
np.log2(a) # [0. 1.443 2.886] (log2)
np.log10(a) # [0. 0.434 0.868] (log10)

# Valeurs absolues et arrondi


b = [Link]([-2.7, -1.5, 0.3, 1.7])
[Link](b) # [2.7 1.5 0.3 1.7]
[Link](b) # [-2. -1. 1. 2.] (plafond)
[Link](b) # [-3. -2. 0. 1.] (plancher)
[Link](b) # [-3. -2. 0. 2.] (arrondi)
[Link](b) # [-2. -1. 0. 1.] (troncature)
[Link](b) # [-1. -1. 1. 1.] (signe)

Produits matriciels
a = [Link]([[1, 2], [3, 4]])
b = [Link]([[5, 6], [7, 8]])

# dot : produit scalaire ou matriciel


[Link](a, b)
# [[19 22]
# [43 50]]

# matmul (ou @) : multiplication matricielle


a @ b # identique à dot pour les matrices 2D

# inner : produit intérieur


[Link]([1, 2, 3], [4, 5, 6]) # 32 = 1*4+2*5+3*6

# outer : produit extérieur -> matrice


[Link]([1, 2, 3], [4, 5])
# [[ 4 5]
# [ 8 10]
# [12 15]]

# cross : produit vectoriel


[Link]([1, 0, 0], [0, 1, 0]) # [0 0 1]

# einsum : notation d'Einstein (très flexible)


[Link]("ij,jk->ik", a, b) # produit matriciel
[Link]("ii", a) # trace = 1+4 = 5
6. Fonctions trigonométriques

Fonctions de base
angles = [Link]([0, [Link]/6, [Link]/4, [Link]/3, [Link]/2])

# Les fonctions travaillent en radians


[Link](angles)
# [0. 0.5 0.707 0.866 1. ]

[Link](angles)
# [1. 0.866 0.707 0.5 0. ]

[Link]([Link]([0, [Link]/4, [Link]/3]))


# [0. 1. 1.732]

# Fonctions inverses
[Link]([0, 0.5, 1]) # [0. 0.524 1.571]
[Link]([1, 0.5, 0]) # [0. 1.047 1.571]
[Link]([0, 1, 1000]) # [0. 0.785 1.570]

# arctan2 : angle dans le bon quadrant


np.arctan2(1, 1) # 0.785 (= pi/4, Q1)
np.arctan2(1, -1) # 2.356 (= 3pi/4, Q2)
np.arctan2(-1, -1) # -2.356 (Q3)

Conversion degrés / radians


# Degrés -> radians
[Link](180) # 3.14159...
np.deg2rad(90) # 1.5707...
np.deg2rad([0, 90, 180, 270, 360])
# [0. 1.571 3.142 4.712 6.283]

# Radians -> degrés


[Link]([Link]) # 180.0
np.rad2deg([Link] / 4) # 45.0

# Hypoténuse
[Link](3, 4) # 5.0 (sqrt(3^2 + 4^2))
[Link]([Link]([3, 5]), [Link]([4, 12]))
# [ 5. 13.]

Fonctions hyperboliques
x = [Link]([0, 0.5, 1, 2])

[Link](x) # [0. 0.521 1.175 3.627]


[Link](x) # [1. 1.128 1.543 3.762]
[Link](x) # [0. 0.462 0.762 0.964]
# Inverses
[Link]([0, 1, 3.627]) # [0. 0.881 2. ]
[Link]([1, 1.543, 3]) # [0. 1. 1.763]
[Link]([0, 0.5, 0.9]) # [0. 0.549 1.472]
7. Statistiques et agrégations

Fonctions de base
a = [Link]([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])

# Globales (sur tout le tableau)


[Link](a) # 45
[Link](a) # 1
[Link](a) # 9
[Link](a) # 5.0
[Link](a) # 2.581...
[Link](a) # 6.666...

# Avec axis : 0=colonnes (vertical), 1=lignes (horizontal)


[Link](a, axis=0) # [12 15 18] somme par colonne
[Link](a, axis=1) # [ 6 15 24] somme par ligne

[Link](a, axis=0) # [4. 5. 6.]


[Link](a, axis=1) # [3 6 9]

Médianes, percentiles et quantiles


a = [Link]([3, 1, 4, 1, 5, 9, 2, 6, 5])

# Médiane
[Link](a) # 4.0

# Percentiles
[Link](a, 25) # 2.0 (Q1)
[Link](a, 50) # 4.0 (Q2 = médiane)
[Link](a, 75) # 5.0 (Q3)
[Link](a, [0, 25, 50, 75, 100])
# [1. 2. 4. 5. 9.]

# Quantiles (même chose, échelle 0-1)


[Link](a, 0.25) # 2.0
[Link](a, [0.1, 0.5, 0.9]) # [1. 4. 6.4]

# Moyenne pondérée
valeurs = [Link]([1, 2, 3, 4])
poids = [Link]([0.1, 0.2, 0.3, 0.4])
[Link](valeurs, weights=poids) # 3.0

Sommes et produits cumulés


a = [Link]([1, 2, 3, 4, 5])
# Somme cumulée
[Link](a) # [ 1 3 6 10 15]

# Produit cumulé
[Link](a) # [ 1 2 6 24 120]

# Sur une matrice par axe


m = [Link]([[1, 2], [3, 4]])
[Link](m, axis=0) # [[1 2] [4 6]] (par colonne)
[Link](m, axis=1) # [[1 3] [3 7]] (par ligne)

Fonctions nan-safe (ignorent les NaN)


a = [Link]([1, 2, [Link], 4, 5])

# Fonctions normales : NaN contamine le résultat


[Link](a) # nan
[Link](a) # nan

# Fonctions nan-safe : ignorent les NaN


[Link](a) # 12.0
[Link](a) # 3.0
[Link](a) # 3.0
[Link](a) # 1.479...
[Link](a) # 1.0
[Link](a) # 5.0

Astuce : Utilisez toujours les versions nan* quand vos données peuvent contenir des valeurs manquantes.
8. Tri et recherche

sort() / argsort() / lexsort()


a = [Link]([3, 1, 4, 1, 5, 9, 2, 6])

# sort : trie et retourne une copie


[Link](a) # [1 1 2 3 4 5 6 9]

# [Link]() : trie EN PLACE (modifie a)


[Link]()

# argsort : retourne les indices de tri


a = [Link]([30, 10, 20])
idx = [Link](a) # [1 2 0]
a[idx] # [10 20 30]

# Tri décroissant
[Link](a)[::-1] # [30 20 10]
[Link](a)[::-1] # [0 2 1]

# lexsort : tri multi-clés (dernier = clé principale)


noms = [Link](["Alice", "Bob", "Alice", "Bob"])
notes = [Link]([85, 90, 75, 88])
idx = [Link]((notes, noms))
# Tri par nom, puis par note

argmin() / argmax() / searchsorted()


a = [Link]([3, 1, 4, 1, 5, 9, 2, 6])

# argmin / argmax : indice du min/max


[Link](a) # 1 (valeur 1)
[Link](a) # 5 (valeur 9)

# Sur une matrice, avec axis


m = [Link]([[3, 5], [1, 8], [7, 2]])
[Link](m, axis=0) # [1 2] min de chaque colonne
[Link](m, axis=1) # [1 1 0] max de chaque ligne

# searchsorted : où insérer pour garder le tri


a = [Link]([1, 3, 5, 7, 9])
[Link](a, 4) # 2 (insérer entre 3 et 5)
[Link](a, [2, 6, 8]) # [1 3 4]

unique() / partition()
# unique : valeurs uniques
a = [Link]([3, 1, 2, 1, 3, 3, 2])
[Link](a) # [1 2 3]
# Avec options utiles
vals, idx = [Link](a, return_index=True)
# vals = [1 2 3], idx = indices première apparition

vals, counts = [Link](a, return_counts=True)


# vals = [1 2 3], counts = [2 2 3]

# partition : les k plus petits à gauche


a = [Link]([7, 3, 5, 1, 9, 4])
[Link](a, 3)
# [1 3 4 7 9 5] les 3 plus petits sont à gauche
# (ordre non garanti dans chaque groupe)
9. Opérations sur les tableaux

clip() / ptp() / abs()


a = [Link]([-3, -1, 0, 2, 5, 10])

# clip : écrête entre min et max


[Link](a, 0, 5) # [0 0 0 2 5 5]
[Link](a, -2, 4) # [-2 -1 0 2 4 4]

# ptp : plage = max - min


[Link](a) # 13 (10 - (-3))

# abs : valeur absolue


[Link](a) # [3 1 0 2 5 10]

# Combinaison courante : normalisation


a = [Link]([2.0, 4.0, 6.0, 8.0])
a_norm = (a - [Link]()) / ([Link]() - [Link]())
# [0. 0.333 0.667 1. ]

delete() / insert() / append() / resize()


a = [Link]([10, 20, 30, 40, 50])

# delete : supprime des éléments


[Link](a, 2) # [10 20 40 50] (supprime index 2)
[Link](a, [1, 3]) # [10 30 50] (supprime plusieurs)

# insert : insère des valeurs


[Link](a, 2, 99) # [10 20 99 30 40 50]
[Link](a, [1, 3], 0) # [10 0 20 30 0 40 50]

# append : ajoute à la fin (retourne une copie)


[Link](a, [60, 70]) # [10 20 30 40 50 60 70]

# resize : redimensionne (peut tronquer ou répéter)


[Link](a, (2, 4))
# [[10 20 30 40]
# [50 10 20 30]] <- répète si trop petit

flip() / fliplr() / flipud() / rot90()


m = [Link]([[1, 2, 3],
[4, 5, 6]])

# flipud : retourne verticalement (haut-bas)


[Link](m)
# [[4 5 6]
# [1 2 3]]
# fliplr : retourne horizontalement (gauche-droite)
[Link](m)
# [[3 2 1]
# [6 5 4]]

# flip : inverse selon un axe (ou tous)


[Link](m, axis=0) # identique à flipud
[Link](m, axis=1) # identique à fliplr

# rot90 : rotation de 90 degrés


np.rot90(m)
# [[3 6]
# [2 5]
# [1 4]]

np.rot90(m, k=2) # rotation 180 degrés


np.rot90(m, k=3) # rotation 270 degrés
10. Nombres complexes

Création et propriétés
# Créer des nombres complexes
a = [Link]([1+2j, 3-4j, -1+0j])

# Partie réelle et imaginaire


[Link](a) # [ 1. 3. -1.]
[Link](a) # [ 2. -4. 0.]

# Conjugué
[Link](a) # [ 1.-2.j 3.+4.j -1.-0.j]

# Module (valeur absolue)


[Link](a) # [2.236 5. 1. ]

# Angle (argument)
[Link](a)
# [ 1.107 -0.927 3.142] en radians
[Link](a, deg=True)
# [ 63.43 -53.13 180. ] en degrés

11. Logique booléenne

all() / any() / isnan() / isfinite()


a = [Link]([1, 2, 3, 4, 5])

# all : tous les éléments sont vrais ?


[Link](a > 0) # True
[Link](a > 2) # False

# any : au moins un élément est vrai ?


[Link](a > 4) # True
[Link](a > 10) # False

# Avec axis
m = [Link]([[1, 0], [2, 3]])
[Link](m > 0, axis=0) # [True False]
[Link](m > 0, axis=1) # [True True]

# Détection de NaN et infinis


b = [Link]([1, [Link], [Link], -[Link], 0])
[Link](b) # [F T F F F]
[Link](b) # [F F T T F]
[Link](b) # [T F F F T]
[Link](b) # [F F T F F]
[Link](b) # [F F F T F]

Comparaisons entre tableaux


a = [Link]([1.0, 2.0, 3.0])
b = [Link]([1.0, 2.001, 3.1])

# array_equal : vérifie égalité exacte


np.array_equal(a, a) # True
np.array_equal(a, b) # False

# allclose : vérifie égalité approchée


[Link](a, b, rtol=1e-2) # True (tolérance 1%)
[Link](a, b, atol=0.01) # True (tolérance abs)

# isclose : comparaison élément par élément


[Link](a, b, atol=0.01)
# [ True True False]
12. Sauvegarde et chargement

Formats binaires NumPy (.npy, .npz)


a = [Link]([[1, 2, 3], [4, 5, 6]])

# Sauvegarder un seul tableau (.npy)


[Link]("[Link]", a)

# Charger
b = [Link]("[Link]")

# Sauvegarder plusieurs tableaux (.npz)


x = [Link](0, 10, 100)
y = [Link](x)
[Link]("[Link]", x=x, y=y)

# Charger un .npz
data = [Link]("[Link]")
x2 = data["x"]
y2 = data["y"]

# Version compressée (fichier plus petit)


np.savez_compressed("donnees_comp.npz", x=x, y=y)

Fichiers texte (.txt, .csv)


# Sauvegarder en texte
a = [Link]([[1.1, 2.2], [3.3, 4.4]])
[Link]("[Link]", a)
[Link]("[Link]", a, delimiter=",",
header="col1,col2", fmt="%.2f")

# Charger depuis un fichier texte


b = [Link]("[Link]")
c = [Link]("[Link]", delimiter=",", skiprows=1)

# genfromtxt : plus robuste, gère les valeurs manquantes


d = [Link]("[Link]", delimiter=",",
names=True, dtype=None)
# Valeurs manquantes remplacées par [Link] automatiquement

Attention : [Link]() échoue sur les fichiers avec des données manquantes. Utilisez [Link]() dans
ce cas.

Référence rapide — Constantes utiles


Constante Valeur Description
[Link] 3.14159... Pi

np.e 2.71828... Nombre d'Euler

[Link] inf Infini positif

[Link] nan Not a Number

np.euler_gamma 0.5772... Constante d'Euler-Mascheroni

Guide NumPy Core — Toutes les fonctions avec exemples explicatifs

Vous aimerez peut-être aussi