迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python NumPy 移位数组

作者:迹忆客 最近更新:2024/03/12 浏览次数:

本教程将介绍移动 NumPy 数组的方法。


使用 np.roll() 方法的 NumPy 移位数组

如果我们想右移或左移 NumPy 数组的元素,我们可以使用 Python 中的 numpy.roll() 方法。numpy.roll() 方法用于沿指定轴滚动数组元素。它接受数组和我们想要移动数组元素的位置数,并返回移动后的数组。如果我们想向右移动元素,我们必须使用一个正整数作为移动值。如果我们想向左移动元素,我们必须指定一个负的移动值。以下代码示例显示了如何使用 numpy.roll() 方法移动数组的元素。

import numpy as np

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

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

输出:

[3 4 5 1 2]

我们首先使用 np.array() 函数创建了数组。然后我们使用 np.roll() 函数将元素向右移动,并将结果数组存储在 array_new 中。


NumPy Shift Array 与 Python 中的切片方法

如果我们想向右或向左移动元素并将移动的索引替换为常量值,我们必须使用 Python 中的数组切片方法。我们可以像原始数组一样创建一个新的空数组。如果移位值为正,我们用常量值填充数组的左侧,如果移位值为负,我们用常量值填充数组的右侧。然后我们可以用原始数组中的值填充新数组的剩余索引。下面的代码示例演示如何使用数组切片方法移动数组的元素。

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)

输出:

[4 5 0 0 0]

我们定义了函数 shift(),它使用上面代码中的数组切片方法将数组的元素向左移动三位。我们首先使用 np.array() 方法创建了原始数组。然后我们指定了我们想要移动数组元素的索引数量 num 和我们想要替换所有移动索引的常量值 fill_value。最后,我们将这些值传递给 shift() 函数,该函数使用 np.empty_like(arr) 函数创建一个新数组 result,就像我们的原始数组一样,存储移位的元素,并打印移位的数组。


Python 中 scipy.ndimage.interpolation 库中带有 shift() 函数的 NumPy 移位数组

scipy.ndimage.interpolation 库中的 shift() 方法 用于使用 Python 中的样条插值方法移动数组。与 numpy.roll() 方法不同,shift() 方法可以移动数组并同时用指定的常量值替换移动的索引。shift() 函数将原始数组、我们想要移动的索引数量以及我们想要用移动索引替换的常量值作为输入参数,并返回移动后的数组,其中每个移动的索引都被替换为指定的恒定值。下面的代码示例向我们展示了如何使用 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)

输出:

[0 0 0 1 2]

我们将 array 的元素向右移动了三个位置,并使用上面代码中的 shift() 函数用 0 替换了移动的索引。我们首先使用 np.array() 函数创建了我们的数组。然后我们使用 shift 函数将 array 向右移动 3 个位置,并用常量值 0 替换原始数组的前三个索引。我们将 shift() 函数的输出存储在 result 数组中。最后,我们将值打印在 result 数组中。

所有这些方法都可以正常工作。如果我们只想移动数组内的值,而不想用常量值替换移动的索引,我们应该使用 numpy.roll() 函数。另一方面,如果我们想用特定的常量值替换移位的索引,则数组切片方法是此操作的最快方法。数组切片方法更快,但比使用 scipy 库中的 shift() 函数要复杂一些。如果我们不关心代码的性能,我们可以使用 shift() 函数来完成这个任务。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Python 中将 Tensor 转换为 NumPy 数组

发布时间:2024/03/12 浏览次数:118 分类:Python

在 Python 中,可以使用 3 种主要方法将 Tensor 转换为 NumPy 数组:Tensor.numpy()函数,Tensor.eval()函数和 TensorFlow.Session()函数。

将 PIL 图像转换为 NumPy 数组

发布时间:2024/03/12 浏览次数:153 分类:Python

在 Python 中,可以使用两种主要方法将 PIL 图像转换为 3 维 NumPy 数组:numpy.array()函数和 numpy.asarray()函数。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便