Como mover elementos em um array numpy (com exemplos)


Você pode usar um dos seguintes métodos para compensar os elementos de uma matriz NumPy:

Método 1: Mudar elementos (manter todos os elementos originais)

 #shift each element two positions to the right
data_new = np. roll (data, 2)

Método 2: Mudar elementos (permitir que elementos sejam substituídos)

 #define shifting function
def shift_elements (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
    return result

#shift each element two positions to the right (replace shifted elements with zero)
data_new = shift_elements(data, 2, 0)

Os exemplos a seguir mostram como usar cada método na prática.

Método 1: Mudar elementos (manter todos os elementos originais)

O código a seguir mostra como usar a função np.roll() para deslocar cada elemento de uma matriz NumPy duas posições para a direita:

 import numpy as np

#create NumPy array
data = np. array ([1, 2, 3, 4, 5, 6])

#shift each element two positions to the right
data_new = np. roll (data, 2)

#view new NumPy array
data_new

array([5, 6, 1, 2, 3, 4])

Observe que cada elemento foi deslocado duas posições para a direita e os elementos no final do array simplesmente foram movidos para frente.

Também poderíamos usar um número negativo na função np.roll() para deslocar os elementos para a esquerda:

 import numpy as np

#create NumPy array
data = np. array ([1, 2, 3, 4, 5, 6])

#shift each element three positions to the left
data_new = np. roll (data, -3)

#view new NumPy array
data_new

array([4, 5, 6, 1, 2, 3])

Método 2: Mudar elementos (permitir que elementos sejam substituídos)

Também podemos definir uma função personalizada para deslocar os elementos de um array NumPy e permitir que os elementos deslocados sejam substituídos por um determinado valor.

Por exemplo, podemos definir a seguinte função para deslocar elementos e substituir todos os elementos deslocados pelo valor 0:

 import numpy as np

#create NumPy array
data = np. array ([1, 2, 3, 4, 5, 6])

#define custom function to shift elements
def shift_elements (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
    return result

#shift each element two positions to the right and replace shifted values with zero
data_new = shift_elements(data, 2, 0)

#view new NumPy array
data_new

array([0, 0, 1, 2, 3, 4])

Também podemos usar um número negativo na função para deslocar os elementos para a esquerda:

 import numpy as np

#create NumPy array
data = np. array ([1, 2, 3, 4, 5, 6])

#define custom function to shift elements
def shift_elements (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
    return result

#shift each element three positions to the left and replace shifted values with 50
data_new = shift_elements(data, -3, 50)

#view new NumPy array
data_new

array([ 4, 5, 6, 50, 50, 50])

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns no NumPy:

Como contar ocorrências de elementos em NumPy
Como classificar um array NumPy por coluna
Como calcular o modo do array NumPy

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *