簡體   English   中英

給定通用維度的開始索引和結束索引來切片NumPy數組

[英]Slicing NumPy array given start and end indices for generic dimensions

給定一個形狀為(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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM