Maison  >  Article  >  développement back-end  >  Comment puis-je regrouper efficacement des tableaux NumPy ?

Comment puis-je regrouper efficacement des tableaux NumPy ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-24 22:40:11977parcourir

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:])

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!

Déclaration:
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