Code source de teachpyx.examples.numpysex

# -*- coding: utf-8 -*-
"""
Quelques exemples autour de `numpy <http://www.numpy.org/>`_.


:githublink:`%|py|6`
"""
import numpy


[docs]def numpy_matrix2list(mat): """ Convertit une matrice `numpy <http://www.numpy.org/>`_ en list. :param mat: matrix :return: liste de listes .. exref:: :title: opérations avec numpy.matrix :tag: numpy Voici quelques écritures classiques avec le module `numpy <http://www.numpy.org/>`_. :: 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) # ... :githublink:`%|py|51` """ return mat.tolist()
[docs]def numpy_types(): """ Returns the list of numpy available types. :return: list of types To know a little bit more about those types. .. faqref:: :title: Quels sont les types que numpy supporte ? :tag: numpy Lire `basic types <http://docs.scipy.org/doc/numpy/user/basics.types.html>`_. `numpy <http://docs.scipy.org/doc/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 <http://arrayfire.com/explaining-fp64-performance-on-gpus/>`_. :githublink:`%|py|79` """ return [numpy.bool_, numpy.int_, numpy.intc, numpy.intp, numpy.int8, numpy.int16, numpy.int32, numpy.int64, numpy.uint8, numpy.uint16, numpy.uint32, numpy.uint64, numpy.float_, numpy.float16, numpy.float32, numpy.float64, numpy.complex_, numpy.complex64, numpy.complex128]