J'essaie d'obtenir une liste des indices de tous les éléments d'un tableau. Ainsi, pour un tableau de 1000 x 1000, je me retrouve avec [(0,0), (0,1),...,(999,999)].
J'ai créé une fonction pour faire cela qui est ci-dessous :
def indices(alist):
results = []
ele = alist.size
counterx = 0
countery = 0
x = alist.shape[0]
y = alist.shape[1]
while counterx < x:
while countery < y:
results.append((counterx,countery))
countery += 1
counterx += 1
countery = 0
return results
Après l'avoir chronométré, il m'a semblé assez lent car il prenait environ 650 ms pour s'exécuter (sur un ordinateur portable lent). Alors, pensant que numpy doit avoir un moyen de faire cela plus rapidement que mon codage médiocre, j'ai jeté un coup d'oeil à la documentation et j'ai essayé :
indices = [k for k in numpy.ndindex(q.shape)]
which took about 4.5 SECONDS (wtf?)
indices = [x for x,i in numpy.ndenumerate(q)]
better, but 1.5 seconds!
Y a-t-il un moyen plus rapide de le faire ?
Merci