Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1# -*- coding: utf-8 -*- 

2""" 

3@file 

4@brief Quelques exemples autour de `numpy <http://www.numpy.org/>`_. 

5""" 

6import numpy 

7 

8 

9def numpy_matrix2list(mat): 

10 """ 

11 Convertit une matrice `numpy <http://www.numpy.org/>`_ en list. 

12 

13 @param mat matrix 

14 @return liste de listes 

15 

16 .. exref:: 

17 :title: opérations avec numpy.matrix 

18 :tag: numpy 

19 

20 Voici quelques écritures classiques avec le module 

21 `numpy <http://www.numpy.org/>`_. 

22 

23 :: 

24 

25 import numpy as np 

26 mat = np.matrix ( [[1,2],[3,4]] ) # crée une matrice 2*2 

27 s = mat.shape # égale à (nombre de lignes, nombre de colonnes) 

28 l = mat [0,:] # retourne la première ligne 

29 c = mat [:,0] # retourne la première colonne 

30 iv = mat.I # inverse la matrice 

31 mat [:,0] = mat [:,1] # la première ligne est égale à la seconde 

32 o = np.ones ( (10,10) ) # crée un matrice de 1 10x10 

33 d = np.diag (mat) # extrait la diagonale d'une matrice 

34 dd = np.matrix (d) # transforme d en matrice 

35 t = mat.transpose () # obtient la transposée 

36 e = mat [0,0] # obtient de première élément 

37 k = mat * mat # produit matriciel 

38 k = mat @ mat # produit matriciel à partir de Python 3.5 

39 m = mat * 4 # multiplie la matrice par 4 

40 mx = np.max (mat [0,:]) # obtient le maximum de la première ligne 

41 s = np.sum (mat [0,:]) # somme de la première ligne 

42 

43 

44 mat = np.diagflat ( np.ones ( (1,4) ) ) 

45 print (mat) # matrice diagonale 

46 t = mat == 0 

47 print (t) # matrice de booléens 

48 mat [ mat == 0 ] = 4 

49 print (mat) # ... 

50 print (iv) # ... 

51 """ 

52 return mat.tolist() 

53 

54 

55def numpy_types(): 

56 """ 

57 Returns the list of numpy available types. 

58 

59 @return list of types 

60 

61 To know a little bit more about those types. 

62 

63 .. faqref:: 

64 :title: Quels sont les types que numpy supporte ? 

65 :tag: numpy 

66 

67 Lire `basic types <http://docs.scipy.org/doc/numpy/user/basics.types.html>`_. 

68 `numpy <http://docs.scipy.org/doc/numpy/>`_ 

69 propose plus de types que Python, les mêmes que le langage C 

70 (langage de son implémentation). Les programmeurs cherchent toujours 

71 le plus petit type possible pour représenter un nombre. 

72 Si une matrice ne possède que des entiers entre 0 et 255, 

73 on peut utiliser le type *numpy.uint8* qui est codé sur un octet. 

74 Cela explique pourquoi beaucoup de libraires de machine learning sont codées 

75 des *numpy.float32*, soit 4 octets plutôt que *numpy.float64* ou *double*. 

76 Deux raisons à cela, les *numpy.float32* prennent deux fois moins de place en mémoire. 

77 Le coût des calculs avec des *double* est plus coûteux avec les GPU. 

78 Lire `Explaining FP64 performance on GPUs <http://arrayfire.com/explaining-fp64-performance-on-gpus/>`_. 

79 """ 

80 

81 return [numpy.bool_, 

82 numpy.int_, 

83 numpy.intc, 

84 numpy.intp, 

85 numpy.int8, 

86 numpy.int16, 

87 numpy.int32, 

88 numpy.int64, 

89 numpy.uint8, 

90 numpy.uint16, 

91 numpy.uint32, 

92 numpy.uint64, 

93 numpy.float_, 

94 numpy.float16, 

95 numpy.float32, 

96 numpy.float64, 

97 numpy.complex_, 

98 numpy.complex64, 

99 numpy.complex128]