numpy 如何使用元组作为切片开始:结束值[duplicate]

6g8kf2rb  于 2023-02-08  发布在  其他
关注(0)|答案(1)|浏览(120)
    • 此问题在此处已有答案**:

Python slice how-to, I know the Python slice but how can I use built-in slice object for it?(6个答案)
3天前关闭。
我需要用两个元组对任意维数的数组进行切片,我可以使用切片,比如a[1:3, 4:6],但是如果1,3和4,6是元组,我该怎么办?
虽然a[(1, 3)]可以工作,但我尝试了a[(1, 3), (4, 6)],它不工作,我认为它忽略了(4,6),而且我不知道如何使a[ t1[0] : t1[1], t2[0] : t2[1] ]这样的东西工作,这取决于有多少维。
我想要类似a[(1, 3):(4, 6)]的东西,它也可以用于更高的维度,例如a [(1,3,2):(4,6,5)]

dxxyhpgq

dxxyhpgq1#

扩展切片语法由slice类型实现。您可以使用一个简单的toy类来使用它

class A:
    def __getitem__(self, k):
        print(k)

然后

>>> A()[1:3, 4:6]
(slice(1, 3, None), slice(4, 6, None))

None是默认的第三个参数,如果你有元组(1, 3)(4, 6),你可以直接传递slice对象,而不是使用扩展的分片语法。

>>> t1, t2 = (1,3), (4, 6)
>>> A()[slice(*t1), slice(*t2)]
(slice(1, 3, None), slice(4, 6, None))

相关问题