Comment passer une liste ou une matrice en argument d'une fonction sous python ?

Published: 05 novembre 2014

DMCA.com Protection Status

Exemples de comment passer une liste ou une matrice en argument d'une fonction sous python:

Matrice en argument d'une fonction

Avec python il est possible d'avoir une matrice comme argument d'une fonction, exemple:

>>> import numpy as np
 >>> def function( x ):
...     return 0.5 * x + 2
... 
 >>> x = np.arange(0,10,0.1)
 >>> y = function(x)
 >>> y
 array([ 2.  ,  2.05,  2.1 ,  2.15,  2.2 ,  2.25,  2.3 ,  2.35,  2.4 ,
    2.45,  2.5 ,  2.55,  2.6 ,  2.65,  2.7 ,  2.75,  2.8 ,  2.85,
    2.9 ,  2.95,  3.  ,  3.05,  3.1 ,  3.15,  3.2 ,  3.25,  3.3 ,
    3.35,  3.4 ,  3.45,  3.5 ,  3.55,  3.6 ,  3.65,  3.7 ,  3.75,
    3.8 ,  3.85,  3.9 ,  3.95,  4.  ,  4.05,  4.1 ,  4.15,  4.2 ,
    4.25,  4.3 ,  4.35,  4.4 ,  4.45,  4.5 ,  4.55,  4.6 ,  4.65,
    4.7 ,  4.75,  4.8 ,  4.85,  4.9 ,  4.95,  5.  ,  5.05,  5.1 ,
    5.15,  5.2 ,  5.25,  5.3 ,  5.35,  5.4 ,  5.45,  5.5 ,  5.55,
    5.6 ,  5.65,  5.7 ,  5.75,  5.8 ,  5.85,  5.9 ,  5.95,  6.  ,
    6.05,  6.1 ,  6.15,  6.2 ,  6.25,  6.3 ,  6.35,  6.4 ,  6.45,
    6.5 ,  6.55,  6.6 ,  6.65,  6.7 ,  6.75,  6.8 ,  6.85,  6.9 ,  6.95])

x est ici une matrice et la fonction retourne une nouvelle matrice y. Cependant il faut faire attention si vous utilisez des fonctions mathématiques dans votre fonction, par exemple le cas suivant ne marche pas:

>>> import numpy as np
 >>> import math
 >>> def function( x ):
...     return math.cos(x)
... 
 >>> y = function(x)
 Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
   File "<stdin>", line 2, in function
 TypeError: only length-1 arrays can be converted to Python scalars

car la fonction math.cos() ne gère pas les matrices. Dans ce cas il faut utiliser numpy comme ceci:

>>> import numpy as np
 >>> def function( x ):
...     return np.cos(x)
... 
 >>> y = function(x)
 >>> y 
 array([ 1.        ,  0.99500417,  0.98006658,  0.95533649,  0.92106099,
    0.87758256,  0.82533561,  0.76484219,  0.69670671,  0.62160997,
    0.54030231,  0.45359612,  0.36235775,  0.26749883,  0.16996714,
    0.0707372 , -0.02919952, -0.12884449, -0.22720209, -0.32328957,
   -0.41614684, -0.5048461 , -0.58850112, -0.66627602, -0.73739372,
   -0.80114362, -0.85688875, -0.90407214, -0.94222234, -0.97095817,
   -0.9899925 , -0.99913515, -0.99829478, -0.98747977, -0.96679819,
   -0.93645669, -0.89675842, -0.84810003, -0.79096771, -0.7259323 ,
   -0.65364362, -0.57482395, -0.49026082, -0.40079917, -0.30733287,
   -0.2107958 , -0.11215253, -0.01238866,  0.08749898,  0.18651237,
    0.28366219,  0.37797774,  0.46851667,  0.55437434,  0.63469288,
    0.70866977,  0.77556588,  0.83471278,  0.88551952,  0.92747843,
    0.96017029,  0.98326844,  0.9965421 ,  0.99985864,  0.99318492,
    0.97658763,  0.95023259,  0.91438315,  0.86939749,  0.8157251 ,
    0.75390225,  0.68454667,  0.60835131,  0.52607752,  0.43854733,
    0.34663532,  0.25125984,  0.15337386,  0.05395542, -0.04600213,
   -0.14550003, -0.24354415, -0.33915486, -0.43137684, -0.51928865,
   -0.6020119 , -0.67872005, -0.74864665, -0.81109301, -0.86543521,
   -0.91113026, -0.9477216 , -0.97484362, -0.99222533, -0.99969304,
   -0.99717216, -0.98468786, -0.96236488, -0.93042627, -0.88919115])
 >>>

Liste en argument d'une fonction

Il est également possible d'avoir une liste comme argument d'une fonction:

 >>> l = ['coucou','hello','salut']
 >>> def fonction(l):
...     for i in l:
...             print i
... 
 >>> fonction(l)
 coucou
 hello
 salut

Références