Matriz de cambios numéricos de Python

Muhammad Maisam Abbas 30 enero 2023
  1. NumPy Shift Array con el método np.roll()
  2. NumPy Shift Array con el método de corte en Python
  3. NumPy Shift Array con función shift() Dentro de la biblioteca scipy.ndimage.interpolation en Python
Matriz de cambios numéricos de Python

Este tutorial presentará métodos para cambiar un array NumPy.

NumPy Shift Array con el método np.roll()

Si queremos desplazar hacia la derecha o hacia la izquierda los elementos de un array NumPy, podemos usar el método numpy.roll() en Python. El método numpy.roll() se utiliza para hacer rodar elementos de array a lo largo de un eje especificado. Toma el array y el número de lugares en los que queremos mover los elementos del array y devuelve el array desplazada. Si queremos desplazar los elementos hacia la derecha, tenemos que utilizar un número entero positivo como valor de desplazamiento. Si queremos desplazar los elementos hacia la izquierda, tenemos que especificar un valor de desplazamiento negativo. El siguiente ejemplo de código muestra cómo cambiar elementos de un array con el 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)

Producción :

[3 4 5 1 2]

Primero creamos el array con la función np.array(). Luego desplazamos los elementos hacia la derecha con la función np.roll() y almacenamos el array resultante dentro de array_new.

NumPy Shift Array con el método de corte en Python

Si queremos mover los elementos hacia la derecha o hacia la izquierda y reemplazar los índices desplazados con un valor constante, tenemos que usar el método de corte de array en Python. Podemos crear una nueva matriz vacía como nuestra matriz original. Si el valor de cambio es positivo, llenamos el lado izquierdo del array con el valor constante, y si el valor de cambio es negativo, llenamos el lado derecho del array con el valor constante. Luego, podemos llenar los índices restantes de nuestra nueva matriz con valores del array original. El siguiente ejemplo de código muestra cómo cambiar elementos de un array con el método de corte 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)

Producción :

[4 5 0 0 0]

Definimos la función shift() que desplaza los elementos de nuestra matriz tres lugares hacia la izquierda usando el método de corte de array en el código anterior. Primero creamos nuestra matriz original con el método np.array(). Luego especificamos el número de índices num que queremos cambiar nuestros elementos del array y el valor constante fill_value con el que queremos reemplazar todos los índices desplazados. Al final, pasamos estos valores a la función shift() que crea una nueva matriz result como nuestra matriz original con la función np.empty_like(arr), almacena los elementos desplazados e imprime el array desplazada.

NumPy Shift Array con función shift() Dentro de la biblioteca scipy.ndimage.interpolation en Python

El método shift() dentro de la biblioteca scipy.ndimage.interpolation se usa para cambiar el array usando el método de interpolación spline en Python. A diferencia del método numpy.roll(), el método shift() puede desplazar el array y reemplazar los índices desplazados con un valor constante especificado simultáneamente. La función shift() toma el array original, el número de índices que queremos cambiar y el valor constante que queremos reemplazar con los índices desplazados como parámetros de entrada y devuelve el array desplazada donde cada índice desplazado se reemplaza con el especificado valor constante. El siguiente ejemplo de código nos muestra cómo cambiar los elementos de un array con la función 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)

Producción :

[0 0 0 1 2]

Desplazamos los elementos de matriz tres lugares hacia la derecha y reemplazamos los índices desplazados con 0 usando la función shift() en el código anterior. Primero creamos nuestra matriz con la función np.array(). Luego usamos la función de desplazamiento para desplazar la matriz hacia el lado derecho en 3 lugares y reemplazar los primeros tres índices del array original con el valor constante 0. Almacenamos la salida de la función shift() dentro del array result. Al final, imprimimos los valores dentro del array result.

Todos estos métodos funcionan bien. Si solo queremos cambiar los valores dentro del array y no queremos reemplazar los índices desplazados con un valor constante, debemos usar la función numpy.roll(). Por otro lado, si queremos reemplazar los índices desplazados con un valor constante específico, el método de corte de array es el método más rápido para esta operación. El método de corte de array es más rápido, pero es un poco más complicado que usar la función shift() en la biblioteca scipy. Si no nos importa el rendimiento de nuestro código, podemos usar la función shift() para esta tarea.

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

Artículo relacionado - NumPy Array