Introdução
Neste laboratório, você aprenderá sobre a função numpy.partition() da biblioteca Numpy. Esta função é usada para dividir o array de entrada de acordo com os argumentos fornecidos e retorna a cópia particionada do array de entrada. A função numpy.partition() é útil quando queremos encontrar rapidamente o k-ésimo menor ou maior elemento em um array, sem ordenar todo o array.
Dicas para a VM
Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.
Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido às limitações do Jupyter Notebook.
Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.
Importar a Biblioteca Numpy
Primeiramente, precisamos importar a biblioteca Numpy, que é comumente usada para trabalhar com arrays e matrizes em Python.
import numpy as np
Criar Array de Entrada
Em seguida, criaremos um array de entrada usando o método array() do Numpy. Este array será o ponto de partida para usarmos a função numpy.partition().
inp_ar = np.array([2, 0, 1, 5, 4, 9, 78, 34])
print("O array de entrada:")
print(inp_ar)
Particionar o Array
Agora, usaremos a função numpy.partition() para particionar o array de entrada inp_ar em torno do 5º menor número. Também imprimiremos o array particionado resultante.
output = np.partition(inp_ar, 5)
print("O array particionado:")
print(output)
Particionar um Array com Múltiplos Valores Kth
A função numpy.partition() também permite particionar em torno de múltiplos valores kth. Neste exemplo, particionaremos um array em torno do 1º e 3º menores números.
arr = np.array([7, 4, 8, 1, 10, 13])
print("O array de entrada:")
print(arr)
output = np.partition(arr, (1, 3))
print("O array particionado:")
print(output)
Especificar Eixo, Tipo e Ordem
A função numpy.partition() também possui parâmetros opcionais que permitem especificar em qual eixo particionar, o tipo de ordenação a ser realizado e a ordem na qual comparar os campos. Neste exemplo, usaremos esses parâmetros opcionais para particionar um array 2D ao longo do segundo eixo e especificar o tipo de ordenação e a ordem.
arr_2d = np.array([[4, 5, 2], [3, 1, 6]])
print("O array 2D de entrada:")
print(arr_2d)
output = np.partition(arr_2d, 1, axis=1, kind='heapsort', order=('col1', 'col2', 'col0'))
print("O array 2D particionado:")
print(output)
Particionar com Valor Kth Negativo
A função numpy.partition() também pode lidar com valores negativos do parâmetro kth. Neste exemplo, particionaremos um array em torno do -2º menor número.
arr = np.array([9, 3, 4, 1, 6])
print("O array de entrada:")
print(arr)
output = np.partition(arr, -2)
print("O array particionado:")
print(output)
Resumo
Neste laboratório, você aprendeu sobre a função numpy.partition() da biblioteca Numpy. Cobrimos como criar um array de entrada, particioná-lo usando a função numpy.partition(), particionar em torno de múltiplos valores kth, especificar eixo (axis), tipo (kind) e ordem (order), e lidar com valores kth negativos. A função numpy.partition() é útil ao lidar com arrays grandes e querer encontrar rapidamente o k-ésimo menor ou maior elemento sem ordenar todo o array.