基于入口/出口索引列表从单个数组中提取多个数组/列表,而无需遍历索引

时间:2019-05-10 06:39:24

标签: python

我想基于索引列表从单个数组中提取多个数组或列表。我知道如何解决索引循环问题:

import numpy as np

Data = np.arange(15)
in_list = [1,5,10]
out_list = [3,8,12]
interval = []
for in_ind,out_ind in zip(in_list,out_list):
    interval.append(Data[in_ind:out_ind])

>>> interval
[array([1, 2]), array([5, 6, 7]), array([10, 11])]

我的“数据”数组非常大,索引列表包含超过10000个元素。因此,遍历索引确实很耗时。如何在不循环遍历索引和/或多次调用“数据”数组的情况下获得相同的结果?

1 个答案:

答案 0 :(得分:0)

对于表示索引,范围仅需要第一个和最后一个元素

in_list = [1,5,10]
out_list = [3,8,12]
interval = []
for in_ind,out_ind in zip(in_list,out_list):
    interval.append(range(in_ind,out_ind))

接下来,仅在迭代具体范围值时才会评估in_ind和out_ind之间的元素