HOWTO · NumPy
Como inverter um array NumPy em Python
Existem três métodos principais que podem ser usados para reverter um array NumPy em Python, o método Basic Slicing, a função numpy.flipud() e a função numpy.flip().
Nesta página
Para inverter um array NumPy em Python, use o fatiamento básico com [::-1], numpy.flipud() ou numpy.flip(). O fatiamento é conciso para inverter um array unidimensional e retorna uma view. numpy.flipud() inverte as linhas ao longo do eixo 0, enquanto numpy.flip() pode inverter um eixo específico ou todos os eixos. Os exemplos abaixo mostram como os resultados diferem.
Como inverter um array NumPy com o método básico de fatiamento em Python
Em um array unidimensional, array[::-1] seleciona os elementos do fim para o início, com passo -1. 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])
reverse = array[::-1]
print(reverse)
[5 4 3 2 1]
A fatia é uma view que referencia os mesmos dados de array; ela não cria uma cópia independente. Portanto, atribuir um valor por meio de reverse também altera o elemento correspondente em array. Se os valores originais precisarem permanecer independentes, faça uma cópia com array[::-1].copy(). Essa abordagem é útil quando o objetivo é inverter um array unidimensional de forma compacta e o comportamento de view é aceitável. Para um array multidimensional, a mesma expressão inverte apenas o primeiro eixo; use uma função que considere os eixos quando precisar especificar qual dimensão deve mudar.
Como inverter um array NumPy com a função numpy.flipud() em Python
numpy.flipud() inverte um array ao longo do eixo 0. Em um array unidimensional, o eixo 0 é o único eixo, então os valores aparecem na ordem inversa. Em um array bidimensional, o eixo 0 corresponde à direção das linhas: a ordem das linhas muda, mas os valores dentro de cada linha mantêm a ordem. A documentação do NumPy sobre numpy.flipud() descreve essa funçã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]])
print(np.flipud(array))
[[3 4]
[1 2]]
Escolha numpy.flipud() quando a operação desejada for inverter o eixo 0, especialmente em matrizes, nas quais isso significa inverter a ordem das linhas. Em um array unidimensional, ela é uma alternativa legível ao fatiamento; para inverter outro eixo, use numpy.flip() e especifique esse eixo.
Como inverter um array NumPy com a função numpy.flip() em Python
numpy.flip() inverte as entradas ao longo do eixo informado. Em um array bidimensional, axis=1 inverte as colunas dentro de cada linha. Se axis for omitido, o valor padrão é None, que inverte todos os eixos. Isso altera tanto a ordem das linhas quanto a ordem dos valores em cada linha; o array não é achatado em uma única sequência. Consulte a documentação do NumPy sobre numpy.flip().
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]])
print(np.flip(array, axis=1))
print(np.flip(array))
[[2 1]
[4 3]]
[[4 3]
[2 1]]
Use numpy.flip(array, axis=0) para inverter as linhas, axis=1 para inverter as colunas de um array bidimensional ou omita axis para inverter todas as dimensões. Em um array unidimensional, omitir axis inverte seu único eixo. Na prática, escolha o fatiamento para uma expressão curta em arrays unidimensionais, numpy.flipud() quando precisar especificamente inverter o eixo 0 e numpy.flip() quando precisar indicar um eixo ou inverter todos eles. Essas operações alteram a ordem dos elementos ao longo das dimensões; não ordenam os valores nem remodelam o array.