J'ai ce tableau, nommé v, de dtype ('float64'): ... que j'ai acquis à partir d'un fichier à l'aide de la commande np.loadtxt . Je voudrais trier l'après les valeurs de la première colonne, sans mélanger la structure qui conserve les chiffres énumérés sur la même ligne ensemble. En utilisant v.sort (Axis = 0) me donne: p> ... IE place le plus petit numéro de la troisième colonne de la première ligne, etc. Je préférerais quelque chose comme ça ... p> ... où les éléments de chaque ligne n'ont pas été déplacés de manière relativement les uns aux autres. p> p>
4 Réponses :
Essayez (avec La seule façon dont je sais de trier la matrice en place est d'utiliser un dtype dtype: p> v code> étant le tableau). V [:, 0] code> est la première colonne et .argsort () code> renvoie les indices qui trieraient la première colonne. Vous appliquez ensuite cette commande à l'ensemble de la matrice en utilisant l'indexation avancée. Notez que vous obtenez une copie de la sorte de la matrice. P>
Si vous avez des instances où v [:, 0] code> a des valeurs identiques et que vous souhaitez trier de manière secondaire sur les colonnes 1, 2, etc., puis vous voudrez utiliser numpy.lexsort () code> ou numpy.sort (v, ordre = ('col1' , 'col2', etc.) code> mais pour le boîtier = code> cas, v code> devra être un tableau structuré. P >
Alternativement
ESSAYER P>
Returns
-------
subarray : ndarray
The returned array has the same type as `a`.
See Also
--------
ndarray.take : equivalent method
Examples
--------
>>> a = [4, 3, 5, 7, 6, 8]
>>> indices = [0, 1, 4]
>>> np.take(a, indices)
array([4, 3, 6])
In this example if `a` is an ndarray, "fancy" indexing can be used.
>>> a = np.array(a)
>>> a[indices]
array([4, 3, 6])
Un exemple d'application de Merci à @Paul pour la suggestion d'utiliser numpy.lexsort () code> Pour trier les rangées d'un tableau et traite des liens dans la première colonne. Notez que lexsort code> trie efficacement les colonnes et commence par la dernière colonne, vous devez donc inverser les lignes de A code>, puis prenez la transposition avant le lexsort code> et enfin transpose le résultat (vous auriez pensé que cela devrait être plus facile, mais bon!): lexsort code >. p> p>