J'ai, disons, un tableau 2D: et un autre avec index: p> Comment puis-je trancher chacun Rangée de x em> à l'aide des index de chaque ligne respective de a em> sans utiliser de boucle afin d'obtenir: p> [[4, 5]
[8, 9]]
3 Réponses :
Vous pouvez utiliser ou ajouter manuellement la première coordonnée (diffusion de la diffusion) p> numpy.take_along_axis code>
Essayez ceci:
import numpy as np x = np.array([[4, 5, 6], [7, 8, 9]]) a = np.array([[0, 1], [1, 2]]) print(np.take_along_axis(x,a,1))
Je sais que c'est techniquement une boucle, mais vous pouvez le faire en une ligne avec une compréhension de la liste.
print(np.array([x[i][a[i]] for i in range(0, x.shape[0])]))