我有一个形状为M x N x ... x T
的Python numpy N维数组,但是直到运行时,我才知道该数组的维数(等级)。
如何创建该数组的子数组的视图,该视图由两个长度为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, ... ]
条目。 最佳答案
如果我理解正确,请使用
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]]]])