teachpyx.examples.numpysex

teachpyx.examples.numpysex.numpy_matrix2list(mat)[source][source]

Convertit une matrice numpy en list.

Paramètres:

mat – matrix

Renvoie:

liste de listes

opérations avec numpy.matrix

Voici quelques écritures classiques avec le module numpy.

import numpy as np
mat = np.matrix ( [[1,2],[3,4]] ) # crée une matrice 2*2
s   = mat.shape           # égale à (nombre de lignes, nombre de colonnes)
l   = mat [0,:]           # retourne la première ligne
c   = mat [:,0]           # retourne la première colonne
iv  = mat.I               # inverse la matrice
mat [:,0] = mat [:,1]     # la première ligne est égale à la seconde
o   = np.ones ( (10,10) ) # crée un matrice de 1 10x10
d   = np.diag (mat)       # extrait la diagonale d'une matrice
dd  = np.matrix (d)       # transforme d en matrice
t   = mat.transpose ()    # obtient la transposée
e   = mat [0,0]           # obtient de première élément
k   = mat * mat           # produit matriciel
k   = mat @ mat           # produit matriciel à partir de Python 3.5
m   = mat * 4             # multiplie la matrice par 4
mx  = np.max (mat [0,:])  # obtient le maximum de la première ligne
s   = np.sum (mat [0,:])  # somme de la première ligne


mat = np.diagflat ( np.ones ( (1,4) ) )
print (mat)  # matrice diagonale
t   =  mat == 0
print (t)    # matrice de booléens
mat [ mat == 0 ] = 4
print (mat)  # ...
print (iv)  # ...
teachpyx.examples.numpysex.numpy_types()[source][source]

Returns the list of numpy available types.

Renvoie:

list of types

To know a little bit more about those types.

Quels sont les types que numpy supporte ?

Lire basic types. numpy propose plus de types que Python, les mêmes que le langage C (langage de son implémentation). Les programmeurs cherchent toujours le plus petit type possible pour représenter un nombre. Si une matrice ne possède que des entiers entre 0 et 255, on peut utiliser le type numpy.uint8 qui est codé sur un octet. Cela explique pourquoi beaucoup de libraires de machine learning sont codées des numpy.float32, soit 4 octets plutôt que numpy.float64 ou double. Deux raisons à cela, les numpy.float32 prennent deux fois moins de place en mémoire. Le coût des calculs avec des double est plus coûteux avec les GPU. Lire Explaining FP64 performance on GPUs.