python - 是否有等同于 (i+1)%N 的 Python 切片符号?

标签 python slice

我有一个 Python numpy 数组,用于模拟环形边界条件。

例如,在i = N-1的边界处,i+1变为0。

我正在使用 a[(i+1)%N, (j+1)%N] 访问最近的邻居,因此索引会自动环绕。

只是想知道是否有更快的方法来执行此操作,使用 Python/Numpy 切片语法。

最佳答案

利用 Python 的负索引。

a[(i+1)-N, (j+1)-N]

等同于您使用模数的版本。证明:

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(len(a)):
    print(a[(i+1)%len(a)], a[i+1-len(a)])


2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
1 1

如果边界小于数组轴的长度,您可以使用正确边界的数组切片(这不应该在 numpy 中使用太多内存,因为它只是一个 View 原始数组),然后使用负索引方法。

关于python - 是否有等同于 (i+1)%N 的 Python 切片符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17227736/

相关文章:

python - 正则表达式匹配开始子句和结束

python - 如果文件不存在则创建文件,然后以 RW 模式打开该文件

Python 检查元组的相等性

python - NeuPy:输入形状问题

go - golang slice 中哪种类型的大小为零?

Python:创建一系列有序数字,跳过第 N 个到第 N+D 个数字的倒数

Python 查找大量字符串的正则表达式模式

没有副本的 C# 数组切片

python - Pandas DataFrame 高级切片

python-3.x - 如何对Python Pandas groupby对象进行不同长度的切片?