У меня есть список чисел, которые я хочу разбить на отдельные массивы, которые содержат только последовательные куски чисел.В качестве второго шага я хотел бы добавить число x последовательных элементов перед первым и после последнего элемента каждого массива, созданного в моем списке.
Это код, который я нашел в качестве решения:
import numpy as np
test_list = (1,2,3,11,12,13,24,25,70,101)
test_list_array = np.asarray(test_list)
#### add 3 items one by one at the end
test_list_array_plus1 = test_list_array +1
test_list_array_plus2 = test_list_array_plus1 +1
test_list_array_plus3 = test_list_array_plus2 +1
### add 3 items one by one preceding 1st element
test_list_array_min1 = test_list_array -1
test_list_array_min2 = test_list_array_min1 -1
test_list_array_min3 = test_list_array_min2 -1
### put all items together
test_list_array_compl = np.concatenate((test_list_array, test_list_array_plus1, test_list_array_plus2, test_list_array_plus3, test_list_array_min1, test_list_array_min2, test_list_array_min3))
### sort them and get rid of duplicates
test_list_array_sorted = np.sort(test_list_array_compl)
test_list_array_uniq = np.unique (test_list_array_sorted)
### add consecutive items in separate arrays in a list
def consecutive(data, stepsize=1):
return np.split(data, np.where(np.diff(data) != stepsize)[0]+1)
test_expanded_by3_no_cons = consecutive(test_list_array_uniq) #get new expanded list
test_list_original_no_cons = consecutive(test_list) #get original list
Проблема сейчас в том, что это нелегко реализовать решение, если, например, мой исходный список содержит элементы, которые будут разделены на массивы с одним номером и к которым я хотел бы добавить 10 последовательныхпредметы как в начале, так и в конце.
Любые идеи о том, как я могу изменить код, чтобы я мог.1. сначала разбить исходный список на список массивов последовательных элементов (это я уже могу сделать).2. Как я могу написать функцию, которая найдет 1-й и последний элемент каждого массива и добавит х элементов?
Это был бы более модульный подход к реализации того, что я хотел бы сделать.Я просто застрял в том, как эта функция будет выглядеть.