Извлечь значения из списка, используя диапазон индексов numpy между каждыми двумя числами - PullRequest
1 голос
/ 09 июля 2020

Я хочу извлечь диапазон индексов, содержащихся в списке 'ranges', из массива 'nums'.

Например:

ranges=np.arange(10, 100, 10).tolist() 
#[10, 20, 30, 40, 50, 60, 70, 80, 90]

nums=np.arange(10, 1000, 5.5)

Здесь я хочу извлечь индексы От 10 до 20, а затем от 20 до 30 и так далее, пока индексы от 80 до 90 не будут указаны в списке 'ranges' из массива 'nums'. Я не уверен, как переключаться между каждыми двумя числами в списке 'ranges'.

Если бы мне просто нужно было извлечь 2-3 диапазона индексов, я бы просто жестко закодировал индексы и срезал-

idx1 = nums[10:21]
idx2 = nums[20:31]
idx3 = nums[30:41]

Но это становится утомительно для различных комбинаций диапазонов, особенно в моем исходном наборе данных с почти 100 диапазонами индексов для извлечения.

Приветствую любую помощь по этому поводу.

Ответы [ 3 ]

2 голосов
/ 09 июля 2020

Что-то вроде этого?

>>> ranges = [10, 20, 35, 42]
>>> for start, end in zip(ranges[:-1], ranges[1:]):
...     print(start, end)
...
10 20
20 35
35 42

(Конечно, извлекайте вместо печати)

2 голосов
/ 09 июля 2020

Вы можете использовать for l oop с выбранным шагом:

idxs = []

for n in range(10, 1000, 10):
    idx.append(nums[n:n+11])
1 голос
/ 09 июля 2020

Это должно сработать:

dic={}
for i in np.transpose([ranges[:-1],ranges[1:]]):
     dic[str(i[0])+"-"+str(i[1])]=nums[i[0]:i[1]]
print(dic)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...