gpt4 book ai didi

python - 在给定通用维度的开始和结束索引的情况下对 NumPy 数组进行切片

转载 作者:太空宇宙 更新时间:2023-11-03 23:59:23 25 4
gpt4 key购买 nike

给定一个形状为 (N_1...N_k) 的 numpy 数组 x,其中 k 是任意的,以及 2 个数组:

start_indices=[a_1,...,a_k], end_indices=[b_1,...b_k], where `0<=a_i<b_i<=N_i`.

我想按如下方式对 x 进行切片:x[a_1:b_1,...,a_k:b_k]

让我们说:

x is of shape `(1000, 1000, 1000)`
start_indices=[450,0,400]
end_indices=[550,1000,600].

我希望输出等于 x[450:550,0:1000,400:600]

例如我试图定义:

slice_arrays = (np.arange(start_indices[i], end_indices[i]) for i in range(k))

并使用

x[slice_arrays]

但是没用。

最佳答案

您可以使用 slice 符号来创建可用于索引的索引元组 -

indexer = tuple([slice(i,j) for (i,j) in zip(start_indices,end_indices)])
out = x[indexer]

或者,使用速记 np.s_ -

indexer = tuple([np.s_[i:j] for (i,j) in zip(start_indices,end_indices)])

或者使用 map 来获得一个紧凑的 -

indexer = tuple(map(slice,start_indices,end_indices))

关于python - 在给定通用维度的开始和结束索引的情况下对 NumPy 数组进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56236779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com