HOWTO · NumPy
Valores de substituição NumPy
Existem três métodos principais que podem ser usados para substituir valores dentro de um array NumPy em Python, a função numpy.clip(), a função numpy.minimum() e o método de indexação.
Nesta página
Para substituir valores em um array NumPy, use numpy.clip() ou combine numpy.minimum() e numpy.maximum() para limitar os valores entre dois limites. Para uma condição como “substituir todos os valores acima de 5”, use indexação booleana e atribuição. As duas primeiras abordagens criam um array de resultado e mantêm a entrada inalterada; a atribuição por indexação atualiza o array original.
Substituir valores em NumPy com a função numpy.clip()
Use numpy.clip() quando quiser manter todos os valores entre um limite inferior e um superior. Os valores abaixo do limite inferior passam a ser iguais a esse limite, e os valores acima do limite superior passam a ser iguais ao limite superior. Sem o argumento out, a função retorna um array com os valores limitados e mantém o array de entrada inalterado. Execute este exemplo:
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, 5, 6, 7, 8, 8, 9, 9])
result = np.clip(array, 0, 5)
print(result)
Saída:
[1 2 3 4 5 5 5 5 5 5 5 5]
Neste caso, 0 é o limite inferior e 5 é o limite superior. Os valores que já estão entre esses limites permanecem iguais, enquanto os maiores são limitados a 5. Atribuir o valor retornado a result mantém o array original disponível para cálculos posteriores.
Substituir valores em NumPy com as funções numpy.minimum() e numpy.maximum()
Você pode aplicar os mesmos dois limites com numpy.minimum() e numpy.maximum(). Primeiro, numpy.minimum() aplica o limite superior ao escolher o menor valor entre cada elemento do array e 5. Em seguida, numpy.maximum() aplica o limite inferior ao escolher o maior valor entre cada resultado intermediário e 0. As duas operações retornam arrays, portanto essa sequência também mantém array inalterado.
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, 5, 6, 7, 8, 8, 9, 9])
result1 = np.minimum(array, 5)
result2 = np.maximum(result1, 0)
print(result2)
Saída:
[1 2 3 4 5 5 5 5 5 5 5 5]
A ordem importa ao aplicar os dois limites: primeiro limite os valores mais altos e depois eleve os valores que estão abaixo do limite inferior. Substitua 5 e 0 pelos limites superior e inferior desejados. Se precisar de apenas um limite, use a função correspondente sozinha: numpy.minimum() para limitar os valores superiores ou numpy.maximum() para elevar os valores inferiores.
Substituir valores em NumPy por indexação de arrays em Python
Para substituir valores com base em uma condição, selecione os elementos correspondentes usando uma máscara booleana e atribua o valor de substituição a essa seleção. Isso é útil quando a regra não consiste apenas em aplicar dois limites, como ao alterar valores acima de um limiar. A atribuição opera no array original; portanto, faça uma cópia antes se precisar preservá-lo.
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, 5, 6, 7, 8, 8, 9, 9])
array[array > 5] = 5
print(array)
Saída:
[1 2 3 4 5 5 5 5 5 5 5 5]
A expressão array > 5 cria uma máscara booleana que é verdadeira para cada valor acima de 5. A indexação com essa máscara seleciona esses elementos, e atribuir 5 a eles os substitui no próprio array. Para substituir valores abaixo de um limiar, altere a comparação para <. Para selecionar um intervalo ou aplicar outra condição, combine comparações booleanas com & ou | e coloque parênteses em cada comparação.