Что я на самом деле хочу сделать, так это уместить все возможные прямые в некоторые данные и найти лучшую группу подобранных линий, измерив их средний квадрат R *. 1001 *
Шаг, который я застрял, состоит в том, как получить достаточным методом все эти возможные подсписки, чтобы потом можно было подгонять. Это также причина, почему я хочу минимальную длину 3, потому что каждая линия, которая проходит через две точки, идеально подходит, и я не хочу этого.
Например, моя первая попытка была примерно такой:
def sub_lists(lst):
lr = [lst[:i] for i in range(3,len(lst)-2)]
rl = [lst[i:] for i in range(len(lst)-3,2,-1)]
return [[lr[i], rl[-i-1]] for i in range(len(lr))]
>>> tst = [489, 495, 501, 506, 508, 514, 520, 522]
>>> sub_lists(tst)
[[[489, 495, 501], [506, 508, 514, 520, 522]],
[[489, 495, 501, 506], [508, 514, 520, 522]],
[[489, 495, 501, 506, 508], [514, 520, 522]]]
но потом я наткнулся на приведенный ниже список длиной 5, и он не сработал. Таким образом, ожидаемый результат будет просто списком:
>>> tst = [489, 495, 501, 506, 508]
>>> sub_lists_revised(tst)
[489, 495, 501, 506, 508]
и следуя той же логике, когда у меня большая длина данных, например, 10:
>>> tst = [489, 495, 501, 506, 508, 514, 520, 525, 527, 529]
>>> sub_lists_revised(tst)
# the whole list
[489, 495, 501, 506, 508, 514, 520, 525, 527, 529]
# all possible pairs
[[[489, 495, 501], [506, 508, 514, 520, 525, 527, 529]],
[[489, 495, 501, 506], [508, 514, 520, 525, 527, 529]],
[[489, 495, 501, 506, 508], [514, 520, 525, 527, 529]],
[[489, 495, 501, 506, 508, 514], [520, 525, 527, 529]],
[[489, 495, 501, 506, 508, 514, 520], [525, 527, 529]]]
# and finally, all possible triplets which i couldn't figure out
[[[489, 495, 501], [506, 508, 514], [520, 525, 527, 529]],
[[489, 495, 501], [506, 508, 514, 520], [525, 527, 529]],
[[489, 495, 501, 506], [508, 514, 520], [525, 527, 529]]]
Итак, в заключение я хочу сказать, что мне нужен общий подход, который будет работать для получения еще большего количества данных, хотя я не думаю, что в настоящий момент мне действительно понадобится больше, чем триплеты.
Я также добавляю цифры из первого примера после подгонки: fig1 , fig2 ,
fig3