Ecrire un code fortran pour calculer la dérivée en un point d'une fonction

Exemple de comment programmer une dérivée en un point en fortran 90: program derivative_function implicit none integer, parameter :: pr = selected_real_kind(15,3) real(pr) :: x,h real(pr) :: der_estimate, previous_der_estimate real(kind=16) :: f integer :: i,n x = 2.0 h = 1.0 n = 10 do i = 1, 10 der_estimate = ( f(x+h) - f(x) ) / h if( i == 1) write(6,*) h, der_estimate if( i > 1) write(6,*) h, der_estimate, der_estimate - previous_der_estimate previous_der_estima

Déterminer le nombre de clés dans un dictionnaire sous python

Pour déterminer le nombre de clés dans un dictionnaire sous python il existe la fonction "built-in" [len()](https://docs.python.org/3.5/library/functions.html#len), exemple: >>> d = {'a':1,'b':2,'c':3,'d':4,'e':5} >>> len(d) 5 ou >>> len(d.keys()) 5 ### Références Liens | Site ------------- | ------------- [Built-in Functions](https://docs.python.org/3.5/library/functions.html#len) | python doc [Counting the Number of keywords in a dictionary in python](http://stackover

Sélectionner aléatoirement des éléments d'une liste ou d'un dictionnaire sous python

Pour sélectionner aléatoirement des éléments d'une liste sous python on peut utiliser la fonction [random. choice()](https://docs.python.org/2/library/random.html): >>> import random >>> l = [i for i in range(10)] >>> l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> random.choice(l) 1 >>> random.choice(l) 6 Marche aussi avec un dictionnaire: >>> import random >>> d = {'a':1,'b':2,'c':3,'d':4,'e':5 >>> random.choice(d.keys()) 'c' >>> random.choice(d.keys

Tracer un histogramme avec un intervalle fixe sous matplotlib

Avec matplotlib pour un avoir intervalle fixe pour un histogramme, il existe l'option [bins](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist) (plt.hist(data, bins=bins), il suffit de lui donne un intervalle (liste ou une matrice 1d), exemple pour avoir un intervalle fixe pour deux histogrammes: [image:two-histograms-03 size:100 caption:Tracer deux histogrammes dans une figure matplotlib (3/3)] import numpy as np import matplotlib.pyplot as plt bins = np.linspace(-5, 15, 10

Tracer deux histogrammes dans une figure matplotlib

Pour tracer un histogramme à partir d'un ensemble de données il existe la fonction matplotlib [hist()](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist). Pour tracer deux histogrammes on peut donc tout simplement faire appelle deux fois a cette fonction, exemple: [image:two-histograms-01 size:100 caption:Tracer deux histogrammes dans une figure matplotlib (1/3)] import numpy as np import matplotlib.pyplot as plt data1 = np.random.randn(100000) plt.hist(data1, bins=25, no

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