Matrice Sous Python
Matrice Sous Python
Matrice Sous Python
Numpy ?
Il n’est pas possible de tout aborder dans ce support. Pour aller plus loin, voir
absolument le manuel de référence (utilisé pour préparer ce diaporama).
http://docs.scipy.org/doc/numpy/reference/index.html
– 2
Création à la volée, génération d’une séquence, chargement à partir d’un fichier
– 3
Création via une saisie manuelle
– 5
Création d’une matrice à partir d’une séquence de valeurs
arange() génère une séquence de valeurs, 0 à 9.
#création à partir d'une séquence
reshape() se charge de les réorganiser en matrice
#attention les dim. doivent être compatibles 2 lignes et 5 colonnes.
a = np.arange(0,10).reshape(2,5)
print(a)
#plus généralement
a = np.full(shape=(2,4),fill_value=0.1)
print(a)
– 6
Chargement à partir d’un fichier - Conversions
Les données peuvent être Remarque : si besoin, modifier le répertoire par défaut avec la
stockées dans un fichier fonction chdir() du module os (qu’il faut importer au préalable)
texte (loadtxt pour charger,
savetxt pour sauver) #charger à partir d'un fichier, typage explicite
#séparateur de colonne = tabulation « \t »
a = np.loadtxt("matrice.txt",delimiter="\t",dtype=float)
print(a)
#liste de valeurs
Conversion d’une lst = [1.2,3.1,4.5,6.3]
collection (type standard print(type(lst)) # <class ‘list’>
Python) en type array de #conversion à partir d'une liste : 2 étapes asarray() et reshape()
« numpy » a = np.asarray(lst,dtype=float).reshape(2,2)
print(a)
– 7
Redimensionnement
#matrice de valeurs
a= a = np.array([[1.2,2.5],[3.2,1.8],[1.1,4.3]])
– 8
Accéder aux valeurs via des indices ou des conditions
EXTRACTION DES VALEURS
– 9
Accès indicé – Plages d’indices
v = np.array([[1.2,2.5],[3.2,1.8],[1.1,4.3]])
#affichage de la structure dans son ensemble
print(v) v=
#accès indicé - première valeur
print(v[0,0]) # 1.2
#dernière valeur – noter l’utilisation de shape (qui est un tuple)
print(v[v.shape[0]-1,v.shape[1]-1]) # 4.3
#autre solution pour affichage de toutes les valeurs, noter le rôle des :
print(v[:,:])
Remarques :
#plage d'indices contigus : lignes 0 à 1 (2 non inclus), toutes les colonnes
(1) Mis à part les
print(v[0:2,:])
singletons, les matrices
#extrêmes, début to 2 (non-inclus) générées sont de type
print(v[:2,:])
numpy.ndarray
#extrêmes, lignes 1 à dernière (2) Toutes comme pour
print(v[1:,:])
les vecteurs, il est
#indice négatif – dernière ligne et toutes les colonnes possible d’utiliser un
print(v[-1,:]) vecteur d’indices non
#indices négatifs – deux dernières lignes et toutes les colonnes contigus.
print(v[-2:,:])
– 10
Accès par conditions – Indiçage booléen
v=
#recherche indice de valeur max des lignes (axis = 0)pour chaque colonne
print(np.argmax(v,axis=0)) # [ 1 2 ]
– 12
Stratégies pour parcourir une matrice
ITÉRATIONS
– 13
Parcours d’une matrice : boucle indicées
#boucles indicées
s = 0.0
for i in range(0,v.shape[0]):
for j in range(0,v.shape[1]):
print(v[i,j])
s = s + v[i,j]
print("Somme = ",s)
– 14
Parcours d’une matrice : les itérateurs
– 16
Calculs (statistiques) récapitulatifs
Principe : les calculs
sont réalisés selon une v=
certaine organisation
des données (axis = #moyenne par colonne
None : toutes les print(np.mean(v,axis=0)) # [1.833 2.867]
valeurs prises
globalement ; axis = 0 #moyenne par ligne
: traitement par print(np.mean(v,axis=1)) # [1.85 2.5 2.7]
colonne ; axis = 1 :
traitement par ligne) #somme cumulée des valeurs pour chaque colonne
print(np.cumsum(v,axis=0))
#matrice de corrélation
#rowvar = 0 pour indiquer que les variables
#sont organisés en colonnes
m = np.corrcoef(v,rowvar=0)
print(m)
La librairie n’est pas très fournie, nous aurons besoin de SciPy (et autres)
– 17
Calcul le long d’un axe
Principe : A la manière
de la fonction apply() v=
de R, nous pouvons
définir des calculs le #moyenne par colonne : [1.833 2.867]
long d’un axe d’une print(np.apply_along_axis(func1d=np.mean,axis=0,arr=v))
matrice (0 par
colonne, 1 par ligne). #une fonction callback – étendue standardisée
Chaque colonne def etendue_std(x):
(ligne) est passée en res = (np.max(x) - np.min(x))/np.std(x)
paramètre à une return res
fonction callback.
#étendue normalisée par colonne : [2.171 2.374]
print(np.apply_along_axis(func1d=etendue_std,axis=0,arr=v))
– 18
NumPy donne sa pleine mesure pour le calcul matriciel
CALCUL MATRICIEL
– 19
Fonctions matricielles (1/2)
x= y=
#transposition
print(np.transpose(x))
#multiplication
print(np.dot(x,y))
#déterminant
print(np.linalg.det(y)) # 4.21
#inversion
print(np.linalg.inv(y))
– 20
Fonctions matricielles (2/2)
x= y=
– 21
Références
Site de Python
Welcome to Python - https://www.python.org/
Python 3.4.3 documentation - https://docs.python.org/3/index.html
Portail Python
Page Python de Developpez.com
POLLS (KDnuggets)
Data Mining / Analytics Tools Used
Python, 4ème en 2015
What languages you used for data mining / data science?
Python, 3ème en 2014 (derrière R et SAS)
– 22