Numpy无法执行以下索引:
a = np.arange(10)
a[-2: 2]
我现在做这件事的方式不是很优雅,有什么诀窍或妙计可以做到这一点吗
编辑:请注意,我不知道在我的代码中是否会遇到这种情况,这种情况有时会发生,所以我正在寻找一种动态的、一对所有的解决方案,而不仅仅是针对这种情况
编辑: 我的广义切片器,相当长
def slicer(array, lower_, upper_):
n = len(array)
lower_ = lower_ % n # if negative, you get the positive equivalent. If > n, you get principal value.
roll = lower_
lower_ = lower_ - roll
upper_ = upper_ - roll
array_ = np.roll(array, -roll)
upper_ = upper_ % n
return array_[lower_: upper_]
我认为这相对简单
如果您知道长度,则只需将数组的长度添加到lower和upper中即可<;0然后,您可以检查upper是否小于lower,并在必要时连接
看起来
np.r_
做了您想要的那种“滚动”:你所期望的和
r_
所做的之间可能存在差异。我会让你研究它的文件就因为你称之为切片,它不是
basic
索引。然而,结果是copy
,而不是view
。还要注意对多维索引的任何扩展在寻找全套替换件时要小心。在Python和numpy中,使用负索引从末尾进行标记(不进行包装)是如此深入,以至于您应该始终假定这是默认行为
将您的包装/卷箱视为例外,需要特殊处理
相关问题 更多 >
编程相关推荐