Maison > développement back-end > Tutoriel Python > Comment puis-je trouver efficacement les indices de plusieurs valeurs maximales dans un tableau NumPy ?

Comment puis-je trouver efficacement les indices de plusieurs valeurs maximales dans un tableau NumPy ?

Patricia Arquette
Libérer: 2024-12-02 13:24:15
original
901 Les gens l'ont consulté

How Can I Efficiently Find the Indices of Multiple Maximum Values in a NumPy Array?

Récupération d'indices de plusieurs valeurs maximales dans des tableaux NumPy

NumPy fournit une fonction np.argmax pratique pour récupérer l'index de la valeur maximale dans un tableau. Cependant, que se passe-t-il si vous avez besoin de trouver les indices des N premières valeurs maximales ?

Solution

Les versions récentes de NumPy (1.8 et supérieures) introduisent la fonction argpartition pour cela but. Pour obtenir les indices des N premiers éléments, suivez ces étapes :

import numpy as np

# Original array
a = np.array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0])

# Find indices of top N elements (N = 4 in this case)
ind = np.argpartition(a, -4)[-4:]

# Extract top N elements
top4 = a[ind]

# Print indices and top N elements
print("Indices:", ind)
print("Top 4 elements:", top4)
Copier après la connexion

Explication

np.argpartition trie partiellement le tableau, le partitionnant en deux sous- tableaux : le premier sous-tableau contient les N premiers éléments (dans ce cas, les 4 plus grands éléments) et le deuxième sous-tableau contient les éléments restants. Le tableau retourné ind contient les indices des éléments du premier sous-tableau.

Le résultat dans cet exemple serait :

Indices: [1 5 8 0]
Top 4 elements: [4 9 6 9]
Copier après la connexion

Optimisations

Si des index triés sont également nécessaires, vous pouvez les trier séparément :

sorted_ind = ind[np.argsort(a[ind])]
Copier après la connexion

Cette étape nécessite O(k log k) time, où k est le nombre d’éléments supérieurs à récupérer. Dans l'ensemble, cette approche a une complexité temporelle de O(nk log k), ce qui la rend efficace pour les grands tableaux et les valeurs modérées de k.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal