Matriz Python NumPy Shift

Muhammad Maisam Abbas 30 janeiro 2023
  1. NumPy Shift Array com o método np.roll()
  2. NumPy Shift Array com o método Slicing em Python
  3. NumPy Shift Array com função shift() dentro da biblioteca scipy.ndimage.interpolation em Python
Matriz Python NumPy Shift

Este tutorial irá apresentar métodos para mudar um array NumPy.

NumPy Shift Array com o método np.roll()

Se quisermos deslocar para a direita ou esquerda os elementos de um array NumPy, podemos usar o numpy.roll() método em Python. O método numpy.roll() é usado para rolar elementos do array ao longo de um eixo especificado. Leva a matriz e o número de lugares onde queremos deslocar os elementos do array e retorna a matriz deslocada. Se quisermos deslocar os elementos para a direita, temos que usar um número inteiro positivo como valor de deslocamento. Se quisermos deslocar os elementos para a esquerda, temos que especificar um valor de deslocamento negativo. O exemplo de código a seguir mostra como deslocar elementos de um array com o método numpy.roll().

import numpy as np

array = np.array([1, 2, 3, 4, 5])

array_new = np.roll(array, 3)
print(array_new)

Resultado:

[3 4 5 1 2]

Primeiro criamos o array com a função np.array(). Em seguida, deslocamos os elementos para a direita com a função np.roll() e armazenamos o array resultante dentro de array_new.

NumPy Shift Array com o método Slicing em Python

Se quisermos deslocar os elementos para a direita ou esquerda e substituir os índices deslocados por um valor constante, temos que usar o método de divisão de array em Python. Podemos criar um novo array vazio exatamente como nosso array original. Se o valor de deslocamento for positivo, preenchemos o lado esquerdo do array com o valor constante e, se o valor de deslocamento for negativo, preenchemos o lado direito do array com o valor constante. Podemos então preencher os índices restantes de nosso novo array com valores do array original. O exemplo de código a seguir mostra como deslocar elementos de um array com o método de divisão de array.

import numpy as np

array = np.array([1, 2, 3, 4, 5])
num = -3
fill_value = 0


def shift(arr, num, fill_value):
    result = np.empty_like(arr)
    if num > 0:
        result[:num] = fill_value
        result[num:] = arr[:-num]
    elif num < 0:
        result[num:] = fill_value
        result[:num] = arr[-num:]
    else:
        result[:] = arr
    print(result)


shift(array, num, fill_value)

Resultado:

[4 5 0 0 0]

Definimos a função shift() que desloca os elementos do nosso array três lugares para a esquerda usando o método de fatiamento do array no código acima. Primeiro criamos nosso array original com o método np.array(). Em seguida, especificamos o número de índices num pelos quais desejamos deslocar nossos elementos do array e o valor constante fill_value pelo qual desejamos substituir todos os índices deslocados. No final, passamos esses valores para a função shift() que cria uma nova matriz result como nossa matriz original com a função np.empty_like(arr), armazena os elementos deslocados e imprime a matriz deslocada.

NumPy Shift Array com função shift() dentro da biblioteca scipy.ndimage.interpolation em Python

O método shift() dentro da biblioteca scipy.ndimage.interpolation é usado para deslocar o array usando o método de interpolação spline em Python. Ao contrário do método numpy.roll(), o método shift() pode deslocar a matriz e substituir os índices deslocados por um valor constante especificado simultaneamente. A função shift() pega a matriz original, o número de índices que queremos mudar e o valor constante que queremos substituir pelos índices deslocados como parâmetros de entrada e retorna a matriz deslocada onde cada índice deslocado é substituído pelo especificado valor constante. O exemplo de código a seguir nos mostra como deslocar os elementos de um array com a função shift().

import numpy as np
from scipy.ndimage.interpolation import shift

array = np.array([1, 2, 3, 4, 5])

result = shift(array, 3, cval=0)
print(result)

Resultado:

[0 0 0 1 2]

Deslocamos os elementos de array três lugares para a direita e substituímos os índices deslocados por 0 usando a função shift() no código acima. Primeiro criamos nosso array com a função np.array(). Em seguida, usamos a função shift para deslocar o array para o lado direito em 3 casas e substituir os três primeiros índices do array original pelo valor constante 0. Armazenamos a saída da função shift() dentro do array result. No final, imprimimos os valores dentro do array result.

Todos esses métodos funcionam bem. Se quisermos apenas deslocar os valores dentro do array e não quisermos substituir os índices deslocados por um valor constante, devemos usar a função numpy.roll(). Por outro lado, se quisermos substituir os índices deslocados por um valor constante específico, o método de divisão de array é o método mais rápido para esta operação. O método de divisão de array é mais rápido, mas é um pouco mais complicado do que usar a função shift() na biblioteca scipy. Se não nos importamos com o desempenho do nosso código, podemos usar a função shift() para esta tarefa.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artigo relacionado - NumPy Array