1

我有一个带有 shape 的 Python numpy N 维数组M x N x ... x T,但直到运行时我才知道数组的维数(秩)。

如何创建该数组的子数组的视图,由两个长度为 rank:extent和的向量指定offset?将 numpy 导入为 np

def select_subrange( orig_array, subrange_extent_vector, subrange_offset_vector ):
    """
    returns a view of orig_array offset by the entries in subrange_offset_vector
    and with extent specified by entries in subrange_extent_vector.
    """
    # ??? 
    return subarray

我被卡住了,因为我发现的切片示例需要[ start:end, ... ]每个数组维度的条目。

4

1 回答 1

3

如果我理解正确,请使用

orig_array[[slice(o, o+e) for o, e in zip(offset, extent)]]

例子:

>>> x = np.arange(4**4).reshape((4, 4, 4, 4))
>>> x[0:2, 1:2, 2:3, 1:3]
array([[[[25, 26]]],


       [[[89, 90]]]])
>>> offset = (0, 1, 2, 1)
>>> extent = (2, 1, 1, 2)
>>> x[[slice(o, o+e) for o, e in zip(offset, extent)]]
array([[[[25, 26]]],


       [[[89, 90]]]])
于 2013-04-05T18:56:41.030 回答