Numpy数组范围索引:如何便捷访问末尾元素?
在NumPy中用范围索引包含末尾元素的简洁写法
在NumPy里,切片遵循左闭右开的规则,这和MATLAB的end逻辑不同,你遇到的问题是很常见的使用差异。解决方法非常直接:
- 要获取从索引
3(对应第4列)到最后一列的所有元素,直接写array[:,3:]即可。当切片的结束位置留空时,NumPy会自动延伸到数组末尾,完全等价于MATLAB里的(:,4:end)。
为什么之前的写法不符合预期?
array[:,3:-1]取不到最后一列,是因为-1指向最后一列的索引,但切片的结束位置是不包含的,所以它会停在倒数第二列。array[0:-1]同理,会取从第0行到倒数第二行的元素,自然覆盖不了整个数组。如果要取整个数组,直接写array[:]或者直接使用原数组即可。
补充几个实用的切片场景:
- 取最后3列:
array[:,-3:] - 取从第2行到最后一行:
array[1:](注意NumPy索引从0开始) - 取所有行的前两列+最后一列:可以用
np.hstack([array[:,:2], array[:,-1:]]),单纯范围索引需求的话,末尾留空就足够满足大部分场景。
内容的提问来源于stack exchange,提问作者Spaceratops
相关产品推荐
相关产品推荐

