Vérifier la version de python

Pour vérifier la version de python installer sur votre système il suffit de taper dans l'interpréteur de commandes: python -V ou python --version Dans un script python on peut passer par le module [sys](https://docs.python.org/2/library/sys.html) ([source](http://stackoverflow.com/questions/1093322/how-do-i-check-what-version-of-python-is-running-my-script)) import sys print (sys.version) ### Références Liens | Site ------------- | ------------- [python -V](https://docs.

Vérifier si un élément est dans une matrice (ou tableau) sous python

Pour vérifier si un élément est dans une matrice (ou tableau) sous python il existe plusieurs solutions, on peut par exemple procéder comme suit: >>> import numpy as np >>> A = np.array(([2,7,1],[5,4,9],[7,3,4])) >>> A array([[2, 7, 1], [5, 4, 9], [7, 3, 4]]) >>> 3 in A True >>> 8 in A False ### Références Liens | Site ------------- | ------------- [What is the most efficient way to check if a value exists in a NumPy array?](http:/

Transformer une matrice de nombres réels en nombres entiers avec python

Pour transformer une matrice de nombres décimaux en nombres entiers avec python il y a la fonction numpy [astype](https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.astype.html). Exemple, pour transformer la matrice A de nombres réels: >>> import numpy as np >>> A = np.logspace(0.1, 3, 100, endpoint=True) >>> A array([ 1.25892541, 1.34676844, 1.44074081, 1.54127022, 1.64881419, 1.76386217, 1.88693776, 2.0186011 , 2.1594514 , 2.31012

Comment créer une liste de nombres espacés uniformément sur une échelle logarithmique avec python ?

Pour générer une liste de nombres espacés uniformément sur une échelle logarithmique avec python on peut passer par la fonction [logspace](https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.logspace.html) de numpy. Par exemple pour générer 100 nombres entre $10^{0.1}$ et $10^{3}$: [TOC] ### Avec la fonction numpy logspace >>> import numpy as np >>> l = np.logspace(0.1, 3, 100, endpoint=True) >>> l array([ 1.25892541, 1.34676844, 1.44074081,

Calculer le reste de la division euclidienne (ou modulo) en fortran

Pour calculer le reste de la division euclidienne (ou modulo) en fortran il existe la fonction [modulo](https://gcc.gnu.org/onlinedocs/gfortran/MODULO.html) illustration: program test_fortran_modulo implicit none write(6,*) modulo(10,2) write(6,*) modulo(10,3) end donne 0 1 car 10 = 2 * 5 + 0 et 10 = 3 * 3 + 1. ### Références Liens | Site ------------- | ------------- [Modulo (opération)](https://fr.wikipedia.org/wiki/Modulo_(op%C3%A9ration)) | wikipedia [modulo](https://

Tracer un histogramme et trouver le mode avec python et matplotlib

Exemple de comment trouver le mode dans un histogramme en utilisant python et matplotlib [image:histogram-mode size:100 caption:Exemple de comment trouver le mode dans un histogramme en utilisant python et matplotlib ] import numpy as np import matplotlib.pyplot as plt data = np.random.randn(100000) * 2.0 + 10.0 hx, hy, _ = plt.hist(data, bins=50, normed=1,color="lightblue") bin_max = np.where(hx == hx.max())[0] print 'Mode hauteur', max(hx) print 'Mode position', ( hy[bin_max] +

Générer des nombres aléatoires depuis une loi normale avec python

### Loi normale centrée réduite Générer des nombres aléatoires depuis une loi normale centrée réduite (ou loi normale standard) en python: [image:numpy-random-numbers-stantard-normal-distribution size:50 caption:Générer des nombres aléatoires depuis une loi normale centrée réduite avec python] import numpy as np import matplotlib.pyplot as plt data = np.random.randn(100000) hx, hy, _ = plt.hist(data, bins=50, normed=1,color="lightblue") plt.ylim(0.0,max(hx)+0.05) plt.ti

Calculer le reste de la division euclidienne (ou modulo) avec python

Pour calculer le reste de la division euclidienne (ou modulo) avec python, il existe l'opérateur %, illustration >>> 10 % 2 0 car 10 = 2 * 5 + 0 >>> 10 % 3 1 car 10 = 3 * 3 + 1 Remarque: avec des nombres décimaux il est préférable d'utiliser [math.fmod()](https://docs.python.org/2/library/math.html): >>> import math >>> math.fmod(10.0,2.0) 0.0 >>> math.fmod(10.0,3.0) 1.0 >>> math.fmod(11.0,3.2) 1.3999999999999995 car 11 = 3 * 3.2 + 1.39999999999

Générer une liste de nombres avec python

Pour générer une liste de nombres avec python il existe plusieurs possibilités. On peut utiliser les [List Comprehensions](http://python-3-patterns-idioms-test.readthedocs.io/en/latest/Comprehensions.html) ou encore passer par la fonction built-in [list()](https://docs.python.org/2/library/functions.html#list). Illustration, supposons que l'on veuille avoir une liste de nombres entiers entre 0 et N, on peut utiliser la fonction range(N): >>> l = [i for i in range(10)] >>> l [0, 1,

Générer des nombres aléatoires depuis une loi normale en fortran 90

### Loi normale centrée réduite Générer des nombres aléatoires depuis une loi normale centrée réduite (ou loi normale standard) en fortran 90 ([source](http://sepwww.stanford.edu/sep/prof/geelib/random.f90)): program test_random_number implicit none integer :: i real(kind=8), external :: rn_std_normal_dist !----------------------------------------------------------------------------------------! ! test standard normal distribution open(1,file='rn_standard_normal_distribution.txt')

Print all MODIS C5 MYD06 SDS names and attributes in python 2.7

Outputs of a code (see bottom of the page) written in python 2.7 to print all MODIS C5 MYD06 SDS names and attributes. All SDS infos: Id | Name | Nb_Dim | Dim | Type | Nb_attributes ------------- | ------------- | ------------- | ------------- | ------------- | ------------- 0 | Latitude | 2 | [408, 270] | 5 | 10 1 | Longitude | 2 | [408, 270] | 5 | 10 2 | Scan_Start_Time | 2 | [408, 270] | 6 | 10 3 | Solar_Zenith | 2 | [408, 270] | 22 | 10 4 | Solar

Print all CALIOP v4 01kmCLay SDS names and attributes in python 2.7

Outputs of a code (see bottom of the page) written in python 2.7 to print all CALIOP v4 01kmCLay SDS names and attributes. All SDS infos: Id | Name | Nb_Dim | Dim | Type | Nb_attributes ------------- | ------------- | ------------- | ------------- | ------------- | ------------- 0 | Profile_ID | 2 | [21120, 1] | 24 | 3 1 | Latitude | 2 | [21120, 1] | 5 | 3 2 | Longitude | 2 | [21120, 1] | 5 | 3 3 | Profile_Time | 2 | [21120, 1] | 6 | 3 4 | Profile_UT

Print all CALIOP v3 01kmCLay SDS names and attributes in python 2.7

Outputs of a code (see bottom of the page) written in python 2.7 to print all CALIOP v3 01kmCLay SDS names and attributes. All SDS infos: Id | Name | Nb_Dim | Dim | Type | Nb_attributes ------------- | ------------- | ------------- | ------------- | ------------- | ------------- 0 | Profile_ID | 2 | [21120, 1] | 24 | 3 1 | Latitude | 2 | [21120, 1] | 5 | 3 2 | Longitude | 2 | [21120, 1] | 5 | 3 3 | Profile_Time | 2 | [21120, 1] | 6 | 3 4 | Profile_UT

Comment inverser une matrice sous python avec numpy ?

Pour inverser une matrice avec python il existe sous numpy la méthode [Linear algebra (numpy.linalg)](https://docs.scipy.org/doc/numpy/reference/routines.linalg.html). Exemple \begin{equation} A = \left( \begin{array}{ccc} 1 & 3 & 3 \\\\ 1 & 4 & 3 \\\\ 1 & 3 & 4 \end{array}\right) \end{equation} matrice inverse A_inv \begin{equation} A^{-1} = \left( \begin{array}{ccc} 7 & -3 & -3 \\\\ -1 & 1 & 0 \\\\ -1 & 0 & 1 \end{array}\right) \end{equation} >>> import numpy

Tracer des données 1d avec matplotlib de python

Supposons que l'on veuille tracer sur une figure matplotlib des données à une dimension (exemple x = [-2.1,-1.3,-0.4,5.1,6.2]). Au lieu de faire: x = [-2.1,-1.3,-0.4,5.1,6.2] y = [0 for i in x] on peut utiliser [numpy.zeros_like](https://docs.scipy.org/doc/numpy/reference/generated/numpy.zeros_like.html). Exemple [image:plot-1d-data size:100 caption:Tracer des données 1d avec matplotlib de python] import matplotlib.pyplot as plt import numpy as np x = [-2.1,-1.3,-0.4,5.1,6.2] p

Comment calculer la densité de probabilité en un point pour une distribution Gaussienne en python ?

Considérons la loi normale de moyenne 8 et de variance 2. [image:probability-normal-distribution size:75 caption:Comment calculer la densité de probabilité en un point pour une distribution Gaussienne en python ?] Pour obtenir la densité de probabilité pour x = 6 par exemple il suffit de taper la commande suivante scipy.stats.norm.pdf(6,8,2) donne 0.13 Code pour tracer la figure ci-dessus: import matplotlib.pyplot as plt import scipy.stats import numpy as np

L'algorithme de Metropolis-Hastings (MCMC) avec python

Exemple d'implémentation de l'algorithme de Metropolis-Hastings (méthode Markov-Chain Monte Carlo MCMC) avec python. Exemple avec une distribution gaussienne comme postérieure [image:posterior] import matplotlib.pyplot as plt import numpy as np import math #----------------------------------------------------------------------------------------# # define posterior distribution def posterior(x): mu, sigma = 5, 2.0 # mean and standard deviation num = math.exp( - ( x - mu )**2 / ( 2

Calculer et tracer une simple extrapolation avec python et matplotlib

Simple exemple sur comment calculer et tracer une extrapolation avec python et matplotlib ([source](http://stackoverflow.com/questions/2745329/how-to-make-scipy-interpolate-give-an-extrapolated-result-beyond-the-input-range)): [image:extrapolate] from scipy.interpolate import InterpolatedUnivariateSpline import matplotlib.pyplot as plt import numpy as np xi = np.array([0.2, 0.5, 0.7, 0.9]) yi = np.array([0.3, -0.1, 0.2, 0.1]) plt.figure() plt.scatter(xi, yi) x = np.linspace(0, 1.0

Tracer une loi normale asymétrique avec matplotlib

Simple exemple sur comment tracer une loi normale asymétrique avec python et matplotlib ([source](http://stackoverflow.com/questions/5884768/skew-normal-distribution-in-scipy)) [image:normal-skewed-distribution] from scipy import linspace from scipy import pi,sqrt,exp from scipy.special import erf import matplotlib.pyplot as plt def pdf(x): return 1/sqrt(2*pi) * exp(-x**2/2) def cdf(x): return (1 + erf(x/sqrt(2))) / 2 def skew(x,e=0,w=1,a=0): t = (x-e) / w return 2 / w * pdf

Insérer une image (photo) dans une figure matplotlib

Exemple de comment insérer une image extérieure dans une figure matplotlib en utilisant [annotation](http://matplotlib.org/examples/pylab_examples/demo_annotation_box.html). L'image utilisée ici est [Lenna.png](https://en.wikipedia.org/wiki/Lenna) [image:add-picture-matplotlib-figure size:50 caption:Insérer une image dans une figure matplotlib] from matplotlib.offsetbox import TextArea, DrawingArea, OffsetImage, AnnotationBbox import matplotlib.pyplot as plt import matplotlib.image

Retrouver une date antérieure à partir de la date actuelle avec python

Rappel: avec python pour obtenir la date il existe le module datetime, exemple: >>> import datetime >>> current_date_obj = datetime.datetime.now() >>> current_date_obj.year 2017 >>> current_date_obj.month 1 >>> current_date_obj.day 10 Pour retrouver une date antérieure comparée à la date actuelle on peut utiliser [timedelta](https://docs.python.org/2/library/datetime.html#timedelta-objects), exemple retrouver la date 30 jours avant la date actuelle: >>> pr

Trouver et remplacer des éléments d'une liste

Pour trouver et remplacer des éléments d'une liste on peut utiliser les [List Comprehensions](https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions). Illustration, remplacer les 'a' par des 'y' dans la liste l suivante: >>> l = ['a','b','a','c','a'] >>> l = ['y' if x == 'a' else x for x in l] >>> l ['y', 'b', 'y', 'c', 'y'] Remplacer les éléments négatifs par 0: >>> [i if i > 0 else 0 for i in l] [0, 3, 7, 0, 2, 4, 0, 6] Supprimer les éléments nég

Trier une liste en python

Pour trier une liste en python il existe la méthode [sort()](https://wiki.python.org/moin/HowTo/Sorting). Exemple avec une liste de chiffres: >>> l = [4,1,7,3,2,9,6,8,5] >>> l.sort() >>> l [1, 2, 3, 4, 5, 6, 7, 8, 9] Avec une liste de lettres: >>> l = ['c','g','h','a','f','e','b','d'] >>> l.sort() >>> l ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] Avec une liste de mots: >>> l = ['hello','coucou','bonjour','hi'] >>> l.sort() >>> l ['bonjour', 'co

Boucle for simultanée sur plusieurs listes en python

Avec python il est possible d'avoir une boucle for simultanée sur plusieurs listes. #### Boucle sur 1 liste Rappelons que dans le cas d'une liste pour itérer sur celle-ci, il suffit de procéder comme ceci: >>> l1 = [4,7,1,9] >>> for i in l1: ... print i ... 4 7 1 9 #### Boucle sur 2 listes Si on veut itérer sur deux listes de même taille on peut utiliser la fonction build-in de python [zip](https://docs.python.org/3/library/functions.html) >>> l1 =

Détection de lignes droites dans une image avec la transformée de Hough

Dans cette note on va voir un exemple simple de vision par ordinateur (computer vision), le cas de la détection de lignes droites par la transformée de Hough (voir la page de [wikipedia](https://en.wikipedia.org/wiki/Hough_transform) en anglais qui est plus complète) avec un code python. Considérons l'image de depart: [image:pentagon size:50 caption:Détection de lignes droites dans une image avec la transformée de Hough] ### Lire l'image La premiere étape consiste à lire l'image (avec