让我们说我们有一个小人物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循环轻松地做到这一点,但是我想知道是否有更快的方法?
答案 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]