HOWTO · NumPy
Excluir linha em NumPy
A função numpy.delete() pode ser usada para excluir uma linha de um array NumPy multidimensional em Python.
Nesta página
Arrays NumPy não têm uma operação para remover linhas que altere seu tamanho no próprio array. Para criar um array sem determinadas linhas, use numpy.delete() com o eixo das linhas ou use uma máscara booleana para manter as linhas que atendam a uma condição. Os índices do array começam em 0, portanto o índice 1 corresponde à segunda linha.
Exclua uma linha pelo índice com numpy.delete()
Passe o array, o índice da linha e axis=0 para numpy.delete(). O eixo 0 seleciona linhas; em um array bidimensional, o eixo 1 selecionaria colunas. Este exemplo remove a segunda linha:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
import numpy as np
array = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
without_second = np.delete(array, 1, axis=0)
print(without_second)
O array retornado contém a primeira e a terceira linhas. numpy.delete() cria um novo array e mantém array inalterado. Use o valor retornado em cálculos posteriores; atribuí-lo a uma nova variável, como no exemplo acima, mantém o array original disponível.
Exclua várias linhas pelo índice
Para remover várias linhas conhecidas em uma única chamada, passe os índices como uma sequência. Os índices continuam se referindo ao array original; portanto, remover o índice 1 não altera o significado do índice 3 nessa mesma chamada. Aqui, a segunda e a quarta linhas são selecionadas para remoção:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
import numpy as np
array = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12]])
without_selected = np.delete(array, [1, 3], axis=0)
print(without_selected)
As linhas restantes são as linhas originais nos índices 0 e 2. Se os valores dos dados determinarem quais linhas devem ser removidas, uma máscara booleana costuma ser mais clara do que coletar os índices primeiro.
Exclua linhas que atendam a uma condição
Uma máscara booleana pode selecionar quais linhas manter. Em um array bidimensional, array[:, 0] seleciona a primeira coluna; compará-la com 5 produz um valor booleano por linha. O exemplo a seguir mantém as linhas cujo valor na primeira coluna é maior que 5:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
import numpy as np
array = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12]])
keep = array[:, 0] > 5
filtered = array[keep]
print(filtered)
Essa abordagem filtra mantendo as linhas correspondentes, em vez de excluir linhas com numpy.delete(). Para remover as linhas que atendam a uma condição, inverta a máscara com ~, como em array[~keep]. Escolha uma comparação que corresponda à coluna e à regra dos seus próprios dados.
Entenda os eixos, os índices e o array retornado
Em um array bidimensional, axis=0 representa as linhas e axis=1, as colunas. Em numpy.delete(array, index, axis=0), index é uma posição baseada em zero ao longo do eixo das linhas: 0 é a primeira linha, 1 é a segunda, e assim por diante. Se axis for omitido, o array será achatado antes da remoção, o que não remove uma linha inteira de um array bidimensional.
A operação retorna um novo array em vez de redimensionar a entrada. Mantenha o resultado atribuindo-o a uma variável ou use-o diretamente em uma expressão posterior. Um índice fora do eixo selecionado está fora dos limites; o NumPy gera um IndexError. Se não tiver certeza de quais linhas uma condição seleciona, inspecione a máscara booleana ou imprima as linhas selecionadas antes de usar o resultado em um cálculo maior.