[英]Vectorized solution to filling a 1-D numpy array given a list of start and end indices for slicing?
[英]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.