Matriz Python NumPy Shift
-
NumPy Shift Array com o método
np.roll()
- NumPy Shift Array com o método Slicing em Python
-
NumPy Shift Array com função
shift()
dentro da bibliotecascipy.ndimage.interpolation
em Python
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.
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