Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

contenu de ce notebook (sauter si déjà acquis)

ce notebook détaille les fonctions numpy qui combinent les éléments d’un tableau
comme numpy.sum, numpy.var...

comment on utilise leur paramètre axis

introduction

The history saving thread hit an unexpected error (OperationalError('database is locked')).History will not be written to the database.
np.float64(4.5)
np.float64(4.5)

agrégation en dimension 1

exemple avec des vecteurs d’entiers

[2 7 2 8 1 8 7 6 8 2]
1 8 51 2.808914381037628
1 8 51 2.808914381037628
numpy.int8

exemple avec un vecteur de booléens

False True
False True
False True
True

exercice : programmer la version “pédestre”

  1. créez une fonction manuelle (sans utiliser np.all et np.any) qui prend un tableau numpy de booléens en paramètre et détermine si tous les éléments du tableau sont vrais.

  2. créez une fonction manuelle (sans utiliser np.all et np.any) qui prend un tableau numpy de booléens en paramètre et détermine si tous les éléments du tableau sont faux.

agrégation en dimension > 1

exemple de tableau en dim 4


somme en dimension 4

(True, True, True, True)
array([[[ 60, 62, 64, 66, 68], [ 70, 72, 74, 76, 78], [ 80, 82, 84, 86, 88], [ 90, 92, 94, 96, 98]], [[100, 102, 104, 106, 108], [110, 112, 114, 116, 118], [120, 122, 124, 126, 128], [130, 132, 134, 136, 138]], [[140, 142, 144, 146, 148], [150, 152, 154, 156, 158], [160, 162, 164, 166, 168], [170, 172, 174, 176, 178]]])

pour les usages (trés) avancés, remarquons qu’on pourrait même passer comme axis plusieurs dimensions

par exemple

tab.sum(axis=(1, 2))

on généralise simplement: au lieu de faire la somme le long d’une droite, ici on va faire la somme sur un plan

et de la même façon qu’en faisant sum(axis=0) on était passé d’une entrée de shape (2, 3, 4, 5) à une sortie de shape (3, 4, 5)

eh bien la shape de tab.sum(axis=(1, 2)) va être (2, 5); les deux dimensions centrales, puisqu’on les a ‘consommées’ pour faire la somme, ont disparu du résultat

array([[ 330, 342, 354, 366, 378], [1050, 1062, 1074, 1086, 1098]])

min et max globaux en dimension 4

119
(np.int64(1), np.int64(2), np.int64(3), np.int64(4))

exercice avancé

  1. proposez le code de la fonction np.unravel_index