Le code Python suivant semble être très long lorsqu'on a l'habitude de travailler avec Matlab.
>>> a = [1, 2, 3, 1, 2, 3]
>>> [index for index,value in enumerate(a) if value > 2]
[2, 5]
Dans Matlab, je peux écrire :
>> a = [1, 2, 3, 1, 2, 3];
>> find(a>2)
ans =
3 6
Existe-t-il une méthode abrégée pour écrire cela en Python, ou dois-je m'en tenir à la version longue ?
Merci pour toutes les suggestions et l'explication de la raison d'être de la syntaxe de Python.
Après avoir trouvé ce qui suit sur le site de numpy, je pense avoir trouvé une solution qui me convient :
http://docs.scipy.org/doc/numpy/user/basics.indexing.html#boolean-or-mask-index-arrays
En appliquant les informations de ce site web à mon problème ci-dessus, on obtiendrait les résultats suivants :
>>> from numpy import array
>>> a = array([1, 2, 3, 1, 2, 3])
>>> b = a>2
array([False, False, True, False, False, True], dtype=bool)
>>> r = array(range(len(b)))
>>> r(b)
[2, 5]
Ce qui suit devrait alors fonctionner (mais je n'ai pas d'interpréteur Python sous la main pour le tester) :
class my_array(numpy.array):
def find(self, b):
r = array(range(len(b)))
return r(b)
>>> a = my_array([1, 2, 3, 1, 2, 3])
>>> a.find(a>2)
[2, 5]