Maison >développement back-end >Tutoriel Python >Comment trier un tableau à deux dimensions selon une ligne ou une colonne en Python

Comment trier un tableau à deux dimensions selon une ligne ou une colonne en Python

黄舟
黄舟original
2018-05-11 15:49:446330parcourir

Cet article présente principalement la méthode Python de tri des tableaux bidimensionnels en fonction d'une certaine ligne ou colonne. Il analyse les techniques de fonctionnement courantes de Python en utilisant la méthode lexsort du module numpy pour trier les tableaux bidimensionnels en fonction d'exemples spécifiques. Amis qui en ont besoin Vous pouvez vous référer à ce qui suit

L'exemple de cet article décrit comment Python implémente la méthode de tri d'un tableau bidimensionnel selon une certaine ligne ou colonne. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

lexsort prend en charge le tri des tableaux dans l'ordre des lignes ou des colonnes spécifiées, il s'agit d'un tri indirect, lexsort ne modifie pas l'original ; tableau et renvoie l'index.

(le tableau unidimensionnel correspondant au lexsort est argsort a.argsort(), vous pouvez l'utiliser de cette façon ; argsort ne modifie pas le tableau d'origine et renvoie l'index)

Par défaut, les éléments dans la dernière ligne est triée de petite à grande et renvoie la position de l'index de la dernière ligne d'éléments après le tri.

Supposons que le tableau a, l'index renvoyé ind, ind renvoie un tableau unidimensionnel

Pour un tableau unidimensionnel, a[ind] est le tableau trié.

Pour les tableaux bidimensionnels, des exemples détaillés seront donnés ci-dessous.

import numpy as np
>>> a
array([[ 2, 7, 4, 2],
    [35, 9, 1, 5],
    [22, 12, 3, 2]])

Trier par ordre de la dernière colonne

>>> a[np.lexsort(a.T)]
array([[22, 12, 3, 2],
    [ 2, 7, 4, 2],
    [35, 9, 1, 5]])

Trier par dernière colonne dans l'ordre inverse

>>>a[np.lexsort(-a.T)]
array([[35, 9, 1, 5],
    [ 2, 7, 4, 2],
    [22, 12, 3, 2]])

Trier par ordre de première colonne

>>> a[np.lexsort(a[:,::-1].T)]
array([[ 2, 7, 4, 2],
    [22, 12, 3, 2],
    [35, 9, 1, 5]])

Trier par ordre de dernière ligne

>>> a.T[np.lexsort(a)].T
array([[ 2, 4, 7, 2],
    [ 5, 1, 9, 35],
    [ 2, 3, 12, 22]])

Trier par ordre de première ligne

>>> a.T[np.lexsort(a[::-1,:])].T
array([[ 2, 2, 4, 7],
    [ 5, 35, 1, 9],
    [ 2, 22, 3, 12]])

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