簡體   English   中英

從給定起始索引的一維數組中提取子數組-Python / NumPy

[英]Extract subarrays from 1D array given start indices - Python / NumPy

NumPy數組可以與其他數組建立索引。 為了顯示:

>>> import numpy as np

>>> arr = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0et ], 'f4')
>>> ids = np.array([0, 2], 'i4')
arr[ids]
array([ 0.,  2.], dtype=float32)

但是,如果我想使用索引指向的值加上三個后續元素的多數組,該怎么辦?

>>> arr[ids:(ids+4)]
Traceback (most recent call last):
  File "<console>", line 1, in <module>
IndexError: invalid slice

預期:

array([[0. 1. 2. 3.], [2. 3. 4. 5.]], dtype=float32)

如何做到這一點?

使用broadcasted加法創建所有這些索引,然后建立索引-

all_idx = ids[:,None]+range(4) # or np.add.outer(ids, range(4))
out = arr[all_idx]

使用np.lib.stride_tricks.as_strided基於strided_app -

strided_app(arr, 4, S=1)[ids]

暫無
暫無

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

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