Classificar matriz por coluna em NumPy
- 
          
            NumPy Classifica Matriz por Coluna com a função numpy.sort()
- 
          
            NumPy Classifica Array por Coluna com a Função numpy.argsort()
 
Este tutorial irá apresentar métodos para classificar um array por coluna em NumPy.
NumPy Classifica Matriz por Coluna com a função numpy.sort()
    
Suponha que temos um array NumPy 2D e queremos classificar as linhas de acordo com a ordem dos elementos dentro de uma coluna específica. Podemos fazer isso com a função numpy.sort(). A função numpy.sort() classifica o array NumPy. Podemos especificar o índice da coluna e o eixo nos parâmetros order e axis da função numpy.sort(). Precisamos converter nosso array em um array estruturado com campos para usar a função numpy.sort(). Podemos usar a função numpy.view() para fazer isso. Veja o seguinte exemplo de código.
import numpy as np
array = np.array([[1, 1, 2], [0, 0, 1], [1, 1, 3]])
print("Array before sorting\n", array)
array.view("i8,i8,i8").sort(order=["f1"], axis=0)
print("Array after sorting\n", array)
Resultado:
Array before sorting
 [[1 1 2]
 [0 0 1]
 [1 1 3]]
Array after sorting
 [[0 0 1]
 [1 1 2]
 [1 1 3]]
Primeiro criamos o array NumPy 2D array com a função np.array(). Em seguida, convertemos o array em um array estruturado com a função array.view(). Depois disso, classificamos o array pela segunda coluna com a função sort(order=['f1'], axis=0). Aqui, f1 se refere à segunda coluna.
NumPy Classifica Array por Coluna com a Função numpy.argsort()
    
Outra maneira mais simples de fazer exatamente a mesma coisa que a abordagem anterior é usar a função numpy.argsort(). A função numpy.argsort() também é usada para classificar os elementos de um array. É muito semelhante à abordagem anterior, mas não precisamos usar a função numpy.view() para que essa abordagem funcione. A função numpy.argsort() retorna os índices que seriam usados para classificar um array. Veja o seguinte exemplo de código.
import numpy as np
array = np.array([[1, 1, 2], [0, 0, 1], [1, 1, 3]])
print("Array before sorting\n", array)
array[array[:, 1].argsort()]
print("Array after sorting\n", array)
Resultado:
Array before sorting
 [[1 1 2]
 [0 0 1]
 [1 1 3]]
Array after sorting
 [[0 0 1]
 [1 1 2]
 [1 1 3]]
Primeiro criamos um array NumPy 2D array com a função np.array(). Em seguida, usamos uma fatia do array para especificar apenas a segunda coluna da array e a classificamos com a função np.argsort(). Usamos os índices retornados pela função np.argsort() para classificar o array.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn