"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment extraire des éléments d'un tableau en fonction des indices d'un autre tableau à l'aide de l'indexation de tableaux entiers ?

Comment extraire des éléments d'un tableau en fonction des indices d'un autre tableau à l'aide de l'indexation de tableaux entiers ?

Publié le 2024-11-08
Parcourir:267

How to Extract Elements from an Array Based on Indices in Another Array Using Integer Array Indexing?

Utilisation de l'indexation de tableaux d'entiers pour extraire des éléments basés sur des indices de tableaux secondaires

Dans le scénario donné, l'objectif est de récupérer des éléments spécifiques d'un tableau A utilisant des indices spécifiés dans un deuxième tableau B. Au lieu de s'appuyer sur np.take ou np.choose, une approche plus simple consiste à utiliser l'indexation de tableau d'entiers de NumPy :

A[np.arange(A.shape[0]),B.ravel()]

Voici comment ce code obtient le résultat souhaité :

  • np.arange(A.shape[0]) crée un tableau de indices de 0 à (A.shape[0] - 1), représentant les lignes de A.
  • B.ravel() aplatit B en un tableau unidimensionnel, garantissant qu'il a le même nombre d'éléments sous forme de lignes dans A.
  • L'opération d'indexation A[...] récupère les éléments de A en utilisant les indices de ligne et les indices de colonne de B.

Cette approche est particulièrement utile lorsque B est un tableau 1D ou une liste d'indices de colonnes. En sautant l'opération d'aplatissement, le code devient encore plus simple :

A[np.arange(A.shape[0]),B]

Exemple :

A = np.array([[0, 1], [2, 3], [4, 5]])
B = np.array([1, 0, 1])

result = A[np.arange(A.shape[0]), B]

print(result)
# Output: [1, 2, 5]
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3