如何移动 numpy 数组中的元素(带有示例)


您可以使用以下方法之一来偏移 NumPy 数组的元素:

方法一:移位元素(保留所有原始元素)

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

方法二:Shift elements(允许元素被替换)

 #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)

以下示例展示了如何在实践中使用每种方法。

方法一:移位元素(保留所有原始元素)

以下代码演示如何使用np.roll()函数将 NumPy 数组的每个元素向右移动两个位置:

 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])

请注意,每个元素已向右移动两个位置,并且数组末尾的元素只是向前移动。

我们还可以在np.roll()函数中使用负数将元素向左移动:

 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])

方法二:Shift elements(允许元素被替换)

我们还可以定义一个自定义函数来移动 NumPy 数组的元素,并允许移动的元素被某个值替换。

例如,我们可以定义以下函数来对元素进行移位,并将所有移位后的元素替换为值 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])

我们还可以在函数中使用负数将元素向左移动:

 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])

其他资源

以下教程解释了如何在 NumPy 中执行其他常见操作:

如何计算 NumPy 中元素出现的次数
如何按列对 NumPy 数组进行排序
如何计算 NumPy 数组的众数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注