Numpy从一组给定的索引中检索一系列元素

时间:2019-09-19 10:58:58

标签: python

让我们说我们有一个小人物array = [10,11,12,13,14,15,16,17,18,19]。如果要在此数组中使用index = [1,3,5]更改元素,则可以简单地调用array[index],这将为您提供元素[11,13,15]的数组。

现在,如果我们还有array = [10,11,12,13,14,15,16,17,18,19],而我想选择一个序列,例如。长度2(基于index = [1,3,5]的数组中的数字)是否在numpy中通过执行类似array[index:(index+2)]返回[[11,12],[13,14],[15,16]]的操作来实现这一点的好方法?我显然可以使用for循环轻松地做到这一点,但是我想知道是否有更快的方法?

2 个答案:

答案 0 :(得分:1)

我会这样:

array[index.reshape(-1,1) + np.arange(2)]

arange()的参数确定从每个索引开始要取多少个元素,如果它们重叠则可以。例如,对于arange(4),结果为:

  [[11, 12, 13, 14],
   [13, 14, 15, 16],
   [15, 16, 17, 18]]

答案 1 :(得分:0)

我认为这是最好的方法:

array = [10,11,12,13,14,15,16,17,18,19]
index = [1, 3, 5]
count = 2
[array[num:num + count] for num in index]