J'essaie d'extraire un sous-ensemble d'un tableau numy y
spécifié par un ensemble d'indices contenus dans x
, tout en laissant certains index de y
libres. Pour un exemple concret. Soit y
ont la forme (10,10,10,3)
tandis que x
a la forme (7,7,3)
. La dernière dimension de x
correspond aux indices info les trois premières dimensions de y
. C'est, je voudrais une opération de découpage efficace avec le même résultat que celle-ci:Slice numpy array avec un autre tableau
for i in x.shape[0]:
for j in x.shape[1]:
z[i,j,:] = y[x[i,j,0],x[i,j,1],x[i,j,2],:]
Idéalement, la réponse travaillerais quel que soit le nombre de dimensions de x
.
En général, y
serait N+1
-dimensionnelle, avec la forme (...,N)
, tandis que x
serait Q+1
avec la forme (...,N)
-dimensionnelle, et le résultat aurait la même forme que x
.
La motivation pour cela est l'extraction d'un sous-ensemble de vecteurs à partir d'un champ de vecteurs.
La première version fait ce que je veux, mais seulement lorsque le nombre de dimensions de 'y' est connu à l'avance. La seconde est générale, mais semble malheureusement très lente (20 fois plus lente dans l'un de mes tests). – amaurea