首页 > 解决方案 > numpy :在围绕数组边界循环时对数组进行切片(甜甜圈的拓扑)

问题描述

我试图通过可能重叠数组的边界来切片一个 numpy 数组。我希望我手中有一个拓扑甜甜圈,但这并没有达到我的预期。举个例子值得一千字:

import numpy as np
# a 10x10 array with c
arr =np.array([[ c + 10 * r for c in range(10)] for r in range(10) ])
print(t[1:3,8:1])

[]

即使我预料到:

[[ 81,82],
 [ 91,92],
 [  1, 2]]

我认为python支持负位置,但在使用时它也失败了:

print(t[1:3,-2:1])
[]

我错过了什么吗?

标签: pythonnumpy

解决方案


正如hpaulj提到的那样,这是不可能的。

但是,可以使用numpy.append或创建一个存储自定义切片的新数组。不幸的是,这将无法通过编辑切片中的数据来更改原始数组中的数据。

最后一个限制使它对我的情况不切实际和无用,但是如果您偶然发现这个问题并且您不需要结果作为参考,请随时留下一个赞。


推荐阅读