Remover Elementos do Array em NumPy
-
Remova os elementos usando a função
numpy.delete()
-
Remova os elementos usando a função
numpy.setdiff1d()
Neste artigo, aprenderemos sobre duas maneiras de remover elementos de um array NumPy.
Remova os elementos usando a função numpy.delete()
Consulte o código a seguir.
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7]
modifiedArray = np.delete(myArray, indexes)
print(modifiedArray)
Resultado:
[ 1 2 3 5 7 9 10]
No código acima, usamos a função delete()
da biblioteca NumPy
. A função delete()
aceita três parâmetros, a saber, arr
, obj
e axis
e produz um array NumPy. O arr
é a matriz NumPy da qual desejamos excluir os elementos. obj
é uma lista de números inteiros. Esses números representam os índices dos elementos que devem ser excluídos do array. Por último, o axis
é um argumento opcional. axis
refere-se ao eixo ao longo do qual os elementos direcionados pelo obj
devem ser excluídos. Se um valor None
for atribuído a este parâmetro, arr
é achatado e a exclusão é realizada nesta matriz achatada.
Como de costume, se um índice que está fora da faixa de arr
for fornecido para esse método, ele lançará uma exceção IndexError
.
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7, 34]
modifiedArray = np.delete(myArray, indexes)
print(modifiedArray)
Resultado:
Traceback (most recent call last):
File "<string>", line 5, in <module>
File "<__array_function__ internals>", line 5, in delete
File "/path/to/library/numpy/lib/function_base.py", line 4480, in delete
keep[obj,] = False
IndexError: index 34 is out of bounds for axis 0 with size 10
Para saber mais sobre esta função, consulte a documentação oficial desta função aqui
Aqui estão mais dois exemplos de exclusão em um array NumPy multidimensional.
import numpy as np
myArray = np.array([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]])
modifiedArray = np.delete(myArray, [1, 2], 1)
print(modifiedArray)
Resultado:
[[ 1 4 5]
[11 14 15]
[21 24 25]]
Use None
como o valor para o parâmetro axis
.
import numpy as np
myArray = np.array([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]])
modifiedArray = np.delete(myArray, [1, 2], None)
print(modifiedArray)
Resultado:
[ 1 4 5 11 12 13 14 15 21 22 23 24 25]
Remova os elementos usando a função numpy.setdiff1d()
Desta vez, usaremos a função setdiff1d()
de NumPy
. Esta função aceita três parâmetros, ar1
, ar2
e assume_unique
. ar1
e ar2
são duas matrizes NumPy. E assume_unique
é um argumento booleano opcional. Seu valor padrão é False
. Quando for True
, as duas matrizes de entrada são consideradas únicas e essa suposição pode acelerar o tempo de cálculo.
setdiff1d()
retorna os valores únicos em ar1
que não estão em ar2
.
Consulte o código a seguir.
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7]
modifiedArray = np.setdiff1d(myArray, indexes)
print(modifiedArray)
Resultado:
[ 1 2 4 6 8 9 10]
Ao contrário de numpy.delete()
, ambos os arrays são arrays NumPy com elementos reais neles, mas não índices.
Para saber mais sobre esta função, consulte a documentação oficial desta função aqui.