module examples.numpysex
#
Short summary#
module teachpyx.examples.numpysex
Quelques exemples autour de numpy.
Functions#
function |
truncated documentation |
---|---|
Convertit une matrice numpy en list. |
|
Returns the list of numpy available types. |
Documentation#
Quelques exemples autour de numpy.
- teachpyx.examples.numpysex.numpy_matrix2list(mat)#
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()#
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.
Code#
# -*- coding: utf-8 -*-
"""
Quelques exemples autour de `numpy <http://www.numpy.org/>`_.
:githublink:`%|py|6`
"""
import numpy
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()
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]