首页 > 解决方案 > numpy 中的索引和切片

问题描述

x = np.array([[[1],[2],[3]], [[4],[5],[6]]])
x.shape
(2,3,1)
x[1:3]
array([[[4],
    [5],
    [6]]])

我期待 x[1:4] 中的错误,因为索引超出范围,但它给出了输出是如何可能的。

标签: pythonnumpynumpy-ndarraynumpy-slicing

解决方案


>>> "hi"[1:500]
'i'

Python 将调整切片的结尾以匹配序列的结尾:索引 2-499 处不再有条目,因此它仅在索引 1 处停止。

>>> "what"[3000:]
''

它还将夹住切片的开头以匹配序列的结尾:索引 3000 处没有条目,因此返回一个空字符串。

与您的情况相同:x[1] == [[4],[5],[6]]],但是x[2:3]是一个空序列,因此您得到[[[4],[5],[6]]]] + []== [[[4],[5],[6]]]]


推荐阅读