我想基于索引列表从单个数组中提取多个数组或列表。我知道如何解决索引循环问题:
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个元素。因此,遍历索引确实很耗时。如何在不循环遍历索引和/或多次调用“数据”数组的情况下获得相同的结果?
答案 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之间的元素