当前位置:  开发笔记 > 编程语言 > 正文

表示连接切片的切片

如何解决《表示连接切片的切片》经验,为你挑选了0个好方法。

切片的索引slice(start, stop[, step])通常可以表示为range(start, stop, step)(或者range(*slice(start, stop, step).indices(length))在考虑基础维度时).

假设我有两个多维切片,第二个切片可以用作应用第一个切片的结果的切片.

例:

import numpy as np
data = np.random.rand(*(100, 100, 100))
a = data[::2, 7, :] # slice 1, a.shape = (50,100)
b = a[1, ::-1] # slice 2, b.shape = (100,)

我想找到一个用于计算执行相同工作的单个切片的通用表达式.我知道底层数据结构的维度.

c = data[2, 7, ::-1] # same as b
np.array_equal(b, c) # True

所以,从获得[::2, 7, :][1, ::-1][2, 7, ::-1] 在这个例子中,我需要像一个函数:

def concatenate_slices(shape, outer_slice, inner_slice):
    ...
    return combined_slice

哪里outer_sliceinner_slice都将成为切片的元组.在示例shape=(100, 100, 100)outer_slice=(slice(None, None, 2), 7, slice(None, None, None))inner_slice=(1, slice(None, None, -1)).

我不确定如何有效地做到这一点.

__getitem__(slice)调用时我的对象做了一些事情(没有中间视图),我想只做一次,但仍然有可能有片切片.

作为扩展(可选)我想知道如果切片中有椭圆会发生什么.我怎样才能组合起来呢?

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有