Python for data science, Study Guides, Projects, Research of Computer science

Use of numpy for scientific calculations.

Typology: Study Guides, Projects, Research

2019/2020

Uploaded on 10/29/2020

kouame-david-n-dri
kouame-david-n-dri 🇨🇮

1 document

1 / 19

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
1
R.R. Université Lyon 2
Ricco Rakotomalala
http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Partial preview of the text

Download Python for data science and more Study Guides, Projects, Research Computer science in PDF only on Docsity!

R.R. – Université Lyon 2 1

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html

Numpy?

R.R. – Université Lyon 2

  • Numpy est un package pour Python spécialisé dans la manipulation des

tableaux (array), pour nous essentiellement les vecteurs et les matrices

  • Les tableaux « numpy » ne gère que les objets de même type
  • Le package propose un grand nombre de routines pour un accès rapide

aux données (ex. recherche, extraction), pour les manipulations diverses

(ex. tri), pour les calculs (ex. calcul statistique)

  • Les tableaux « numpy » sont plus performants (rapidité, gestion de la

volumétrie) que les collections usuelles de Python

  • Les tableaux « numpy » sont sous-jacents à de nombreux packages

dédiés au calcul scientifique sous Python.

  • Attention, un vecteur est en réalité une matrice à 1 seule dimension

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

Création via une saisie manuelle

R.R. – Université Lyon 2

Préalable important : importer le module « numpy »

import numpy as np

np sera l’alias utilisé pour accéder aux routines de la librairie « numpy ».

Création manuelle à partir d’un ensemble de valeurs

a = np .array( [ 1.2,2.5,3.2,1.8 ] ) Noter le rôle des [ ] pour délimiter les valeurs

Informations sur la

structure

#type de la structure print(type(a)) # #type des données print(a.dtype) #float #nombre de dimensions print(a.ndim) #1 (on aura 2 si matrice, etc.) #nombre de lignes et col print(a.shape) #(4,)  on a tuple! 4 cases sur la 1ère^ dim (n°0) #nombre totale de valeurs print(a.size) #4, nb.lignes x nb.colonnes si matrice

Typage des données

R.R. – Université Lyon 2

Le typage des valeurs peut être implicite ou explicite

#création et typage implicite a = np.array([1,2,4]) print(a.dtype) #int

#création et typage explicite – préférable! a = np.array([1,2,4],dtype=float) print(a.dtype) #float print(a) #[1. 2. 4.]

#un vecteur de booléens est tout à fait possible b = np.array([True,False,True,True], dtype=bool) print(b) #[True False True True]

Création d’un array d’objets complexes (autres que les types de base) est possible

la donnée peut être un objet python

a = np.array([{"Toto":(45,2000)},{"Tata":(34,1500)}]) print(a.dtype) #object

Chargement à partir d’un fichier - Conversions

R.R. – Université Lyon 2

Les données peuvent être stockées dans un fichier texte (loadtxt pour charger, savetxt pour sauver)

#charger à partir d'un fichier #typage explicite possible a = np.loadtxt("vecteur.txt",dtype=float) print(a) #[4. 5. 8. 16. 68. 14. 35.]

1 seule colonne pour l’instant

Conversion d’une collection (type standard Python) en type array de « numpy »

#liste de valeurs lst = [1.2,3.1,4.5] print(type(lst)) # #conversion à partir d'une liste a = np.asarray(lst,dtype=float) print(type(a)) # print(a) #[1.2 3.1 4.5]

Remarque : si besoin, modifier le répertoire par défaut avec la fonction chdir() du module os (qu’il faut importer au préalable)

Redimensionnement

R.R. – Université Lyon 2

Rajouter une valeur en dernière position

Suppression d’une valeur via son indice

Concaténation de 2 vecteurs

Redimensionnement explicite

#vecteur de valeurs a = np.array([1.2,2.5,3.2,1.8]) #ajouter une valeur , placée en dernière position a = np.append(a,10) print(a) #[1.2 2.5 3.2 1.8 10.]

#suppression via indice b = np.delete(a,2) #une plage d’indices est aussi possible print(b) #[1.2 2.5 1.8 10.]

a = np.array([1,2,3]) #redimensionnement #1 valeur pour vecteur, couple de valeurs pour matrice a.resize(new_shape=5) print(a) #[1 2 3 0 0], les nouvelles cases mises à 0

#concatenation 2 vecteurs x = np.array([1,2,5,6]) y = np.array([2,1,7,4]) z = np.append(x,y) print(z) #[1 2 5 6 2 1 7 4]

Accès indicé – Plages d’indices – v = np.array([1.2,7.4,4.2,8.5,6.3])

R.R. – Université Lyon 2

#toutes les valeurs print(v) #ou print(v[:]) # noter le rôle du : , il faut lire ici début à fin

#accès indicé - première valeur print(v[0]) # 1.2 – Noter que le 1er^ indice est 0 (zéro)

#dernière valeur print(v[v.size-1]) #6.3, v.size est ok parce que v est un vecteur #plage d'indices contigus print(v[1:3]) # [7.4 4.2] #extrêmes, début à 3 (non-inclus) print(v[:3]) # [1.2 7.4 4.2]

#extrêmes, 2 à fin print(v[2:]) # [4.2 8.5 6.3]

#indice négatif print(v[-1]) # 6.3, dernier élément

#indices négatifs print(v[-3:]) # [4.2 8.5 6.3], 3 derniers éléments

Remarque : Mis à part

les singletons, les

vecteurs générés sont

de type numpy.ndarray

Accès indicé – Ecriture générique - v = np.array([1.2,7.4,4.2,8.5,6.3])

R.R. – Université Lyon 2

La notation générique des indices est : début:fin:pas

fin est non inclus dans la liste

#valeur n°1 à n°3 avec un pas de 1 print(v[1:4:1]) # [7.4, 4.2, 8.5]

#le pas de 1 est implicite print(v[1:4]) # [7.4, 4.2, 8.5]

#n°0 à n°2 avec un pas de 2 print(v[0:3:2]) # [1.2, 4.2]

#le pas peut être négatif, n°3 à n°1 avec un pas de - print (v[3:0:-1]) # [8.5, 4.2, 7.4]

#on peut exploiter cette idée pour inverser un vecteur print(v[::-1]) # [6.3, 8.5, 4.2, 7.4, 1.2]

Tri et recherche -- v = np.array([1.2,7.4,4.2,8.5,6.3])

R.R. – Université Lyon 2

#recherche valeur max

print(np.max(v)) # 8.

#recherche indice de valeur max

print(np.argmax(v)) # 3

#tri des valeurs

print(np.sort(v)) # [1.2 4.2 6.3 7.4 8.5]

#récupération des indices triés

print(np.argsort(v)) # [0 2 4 1 3]

#valeurs distinctes

a = np.array([1,2,2,1,1,2])

print(np.unique(a)) # [1 2]

Remarque : L’équivalent

existe pour min()

CALCULS SUR LES VECTEURS

R.R. – Université Lyon 2

Calculs entre vecteurs – Le principe « elementwise »

R.R. – Université Lyon 2

Principe : Les calculs se font élément par élément

(elemenstwise) entre vecteurs « numpy » - On a le

même principe sous R.

#calculs entre vecteurs x = np.array([1.2,1.3,1.0]) y = np.array([2.1,0.8,1.3]) #multiplication print(xy) # [2.52 1.04 1.3] #addition print(x+y) # [3.3 2.1 2.3] #multiplication par un scalaire print(2x) # [2.4 2.6 2. ]

#comparaison de vecteurs x = np.array([1,2,5,6]) y = np.array([2,1,7,4]) b = x > y print(b) # [False True False True]

#opérations logiques a = np.array([True,True,False,True],dtype=bool) b = np.array([True,False,True,False],dtype=bool) #ET logique np.logical_and(a,b) # [True False False False] #OU exclusif logique np.logical_xor(a,b) # [False True True True]

La liste des fonctions est longue. Voir - http://docs.scipy.org/doc/nump y/reference/routines.logic.html

Fonctions matricielles

R.R. – Université Lyon 2

Principe : Des fonctions

spécifiquement matricielles

existent, certaines s’appliquent à

des vecteurs

x = np.array([1.2,1.3,1.0])

y = np.array([2.1,0.8,1.3])

#produit scalaire

z = np.vdot(x,y)

print(z) # 4.

#ou l’équivalent calculé

print(np.sum(x*y)) # 4.

#norme d'un vecteur

n = np.linalg.norm(x)

print(n) # 2.

#ou l’équivalent calculé

import math

print(math.sqrt(np.sum(x**2))) # 2.

R.R. – Université Lyon 2 19

Références

De la documentation à profusion ( n’achetez pas des livres sur Python )

Site du cours http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html

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

Quelques cours en ligne P. Fuchs, P. Poulain, « Cours de Python » sur Developpez.com G. Swinnen, « Apprendre à programmer avec Python » sur Developpez.com « Python », Cours interactif sur Codecademy

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)