2016-10-17 9 views
2

Добрый вечер, StackOverflow. В последнее время я боролся с программой Python, которую я постараюсь кратко описать как можно скорее.Cropping Python списки по значению вместо индекса

По сути, мои графики программы (а затем подходят для функций). Рассмотрим this graph. Графические графики просто прекрасны, но я бы хотел, чтобы это сделало немного больше: поскольку данные периодичны в течение интервала OrbitalPeriod (1.76358757), я бы хотел, чтобы это началось с нашего first x значение, а затем итеративно заговорить все точки OrbitalPeriod оттуда, а затем сделать то же самое в следующей области длины OrbitalPeriod.

Я знаю, что есть способ, чтобы нарезать списки в Python формы

croppedList = List[a:b] 

где и б являются индексами первых и последних элементов, которые вы хотели бы включить в новый список, соответственно. Тем не менее, я понятия не имею, какие индексы будут для каждого из значений, или сколько значений приходится на каждый интервал OrbitalPeriod.

Что я хочу делать в псевдокоде, выглядит примерно так.

croppedList = перенаправление на домене [а + (N * OrbitalPeriod), а + (N + 1 * OrbitalPeriod)]

где является й-значением первой значащей точки данных.

Если у вас есть обходной путь для этого или метод обрезки, который будет принимать значения вместо индексов в качестве аргументов, сообщите мне. Благодаря!

+0

Попробуйте написать функцию, которая возвращает индексы элементов списка, которые близки (* достаточно *) интервалам. Вы можете перебирать список и проверять каждый элемент на значение первого интервала, когда вы находите его, сохраняете индекс, затем увеличиваете интервал и продолжаете проверку элементов списка. [enumerate] (https://docs.python.org/3/library/functions.html#enumerate), вероятно, поможет. – wwii

ответ

0

Если вы работаете с numpy, вы можете использовать его внутри скобок

m = x 
M = x + OrbitalPeriod 
croppedList = List[m <= List] 
croppedList = croppedList[croppedList < M] 

 Смежные вопросы

  • Нет связанных вопросов^_^