【发布时间】:2017-12-20 20:00:19
【问题描述】:
我有一个 numpy 数组:
arr = numpy.arange(25 * 10 * 20)
arr.resize((25, 10, 20))
我想得到这样的切片:
arr[3:6, 2:8, 7:9]
这行得通:
index = [slice(3, 6), slice(2, 8), slice(7, 9)]
arr[index]
但这不是:
>>> index = slice([3, 2, 7], [6, 8, 9])
>>> arr[index]
TypeError: slice indices must be integers or None or have an __index__ method
可以由一个slice 对象完成吗?还是只有 3 个 slices 中的 list 有效?
【问题讨论】:
-
不是开箱即用,也不是一片,但this class 让它几乎一样方便。
-
鉴于
slice和numpy索引的当前定义,切片元组是基础对象。任何替代方案最终都会产生这种效果。 -
顺便说一下,元组是一个对象。切片也是一个简单的类,具有三个属性和几个方法。是 .__getitem__ 做的。