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!