Comment puis-je regrouper efficacement des tableaux NumPy ?

Barbara Streisand
Libérer: 2024-11-24 22:40:11
original
975 Les gens l'ont consulté

How Can I Efficiently Group NumPy Arrays?

Regroupement efficace de tableaux avec NumPy

Bien que NumPy n'offre pas de fonction prête à l'emploi spécifiquement conçue pour regrouper des tableaux, il sont des techniques polyvalentes qui peuvent efficacement obtenir des résultats similaires.

Inspiré par Eelco Bibliothèque

Une approche s'inspire de la bibliothèque d'Eelco Hoogendoorn, en la simplifiant en exploitant l'hypothèse selon laquelle la première colonne du tableau d'entrée augmente de manière monotone. Sinon, il peut d'abord être trié en utilisant a = a[a[:, 0].argsort()].

np.split(a[:, 1], np.unique(a[:, 0], return_index=True)[1][1:])
Copier après la connexion

Identification unique des groupes

Ceci L'extrait exploite np.unique() pour identifier les valeurs uniques dans la première colonne, renvoyant leurs indices. Ces indices sont utilisés pour diviser la deuxième colonne en sous-tableaux distincts représentant chaque groupe.

Complexité temporelle et performances

Cette méthode présente une complexité O(n), ce qui la rend hautement efficace. Les mesures empiriques de timeit sur des tableaux avec différentes tailles de groupe confirment ses avantages en termes de performances par rapport à d'autres approches telles que pandas, numpy-indexed et defaultdict.

Solutions alternatives

Au-delà de l'approche présentée , les techniques basées sur NumPy telles que numpy_groupies peuvent également être explorées pour le regroupement opérations.

Considérations supplémentaires

Si la première colonne du tableau d'entrée n'est pas triée, il est recommandé de la trier avant le regroupement pour garantir des résultats précis. Gardez à l'esprit que certains algorithmes de tri, tels que argsort, ont une complexité temporelle de O(n log(n)).

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