Classificar matriz por coluna em NumPy

Muhammad Maisam Abbas 30 janeiro 2023
  1. NumPy Classifica Matriz por Coluna com a função numpy.sort()
  2. NumPy Classifica Array por Coluna com a Função numpy.argsort()
Classificar matriz por coluna em NumPy

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.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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