Changer l'orientation (rotation) des labels d'une colorbar sous matplotlib

Exemple de comment tourner les labels d'une colorbar avec matplotlib: [image:rotation-of-colorbar-tick-labels-in-matplotlib size:100 caption:Changer l'orientation (rotation) des labels d'une colorbar sous matplotlib] import numpy as np import matplotlib.pyplot as plt import matplotlib.cm as cm import matplotlib as mpl x = np.linspace(-3.0, 3.0, 100) y = np.linspace(-3.0, 3.0, 100) X, Y = np.meshgrid(x, y) Z = np.sqrt(X**2 + Y**2) max_value = Z.max() min_value = Z.min() plt.figur

Transformer une matrice 2D en 1D avec numpy sous python

Pour transformer une matrice 2D en 1D avec numpy sous python, il y a la fonction [numpy.ravel](https://docs.scipy.org/doc/numpy/reference/generated/numpy.ravel.html), exemple: >>> A = np.array(([1,2],[3,4])) >>> np.ravel(A) array([1, 2, 3, 4]) Autre exemple avec une matrice de dimension (3,3) >>> A = np.array(([1,2,3],[4,5,6],[7,8,9])) >>> np.ravel(A) array([1, 2, 3, 4, 5, 6, 7, 8, 9]) on peut aussi specifier l'ordre voir [numpy.ravel](https://docs.scipy.org/doc/numpy

Fusionner deux matrices avec numpy sous python

Pour fusionner deux matrices avec numpy on peut utiliser [numpy.concatenate](https://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html), illustration avec 2 matrices à une dimension: >>> A = np.array(([1,2,3])) >>> B = np.array(([4,5,6])) >>> C = np.concatenate((A, B)) >>> C array([1, 2, 3, 4, 5, 6]) Avec deux matrices de dimensions (2,2): >>> A = np.array(([1,2],[3,4])) >>> A array([[1, 2], [3, 4]]) >>> B = np.array(([5,6],[7,8

Supprimer (ou filtrer) des éléments d'une matrice avec python et numpy

Supposons que l'on veuille supprimer les éléments négatifs d'une matrice à une dimension A, on peut alors utiliser un simple filtre A[A > 0], exemple: >>> A = np.array(([-1,2,4,7,-3,9,3])) >>> A[A > 0] array([2, 4, 7, 9, 3]) Attention, pour une matrice à deux dimensions ou plus, le filtre A[A > 0] retourne une matrice à une dimension, illustration: >>> A = np.array(([1,2,-3],[4,-5,6],[-7,8,-9])) >>> A array([[ 1, 2, -3], [ 4, -5, 6], [-7

Create MODIS C6 L2 Cloud Effective Radius histograms with python

There are several different ways to create an histogram of MODIS C6 L2 Cloud Effective Radius and filter the data. #### Read SDS data and import needed modules To download a MODIS granule from NASA lads server using python and ftp, go [here](/Codes/Download-MODIS-granule-HDF-files-from-lads-using-ftp-and-python/). To learn how to read an HDF file with python go [here](/Articles/How-to-read-a-MODIS-HDF-file-using-python-/) #!/usr/bin/env python from pyhdf.SD import SD, SDC import numpy

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

Obtenir la probabilité en un point donné d'une loi normale avec python

Considérons la loi normale de moyenne 8 et de variance 2. [image:probability-normal-distribution size:100 caption:Obtenir la probabilité en un point donné d'une loi normale avec python] Pour obtenir la 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 x = np.linspace(0, 16.0, 100) plt.plot(x,scipy.stat

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