Как векторизовать для l oop в python, который использует переменные состояния, т.е. для для l oop, который проверяет текущее состояние во время расчета - PullRequest
1 голос
/ 05 марта 2020

Как мне векторизовать следующее для l oop, который имеет память о своем текущем состоянии (переменная 'current_state' ниже)? Я здесь тривиализировал функцию, реальная немного сложнее, но структура та же самая - она ​​просто работает на слишком большом массиве, чтобы экономить время. В итоге: мне нужно знать, когда и сколько раз сигнал, сохраненный в 'test_array', пересекает определенный или пороговый уровень:

test_array = [0,1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]
results_array = []

current_state = '<=3'

for i in range(len(test_array)):
    if current_state == 'mid' and test_array[i] >= 7:
        current_state = '>=7'
        results_array.append((i,current_state))

    if current_state == 'mid' and test_array[i] <= 3:
        current_state = '<=3'
        results_array.append((i,current_state))

    if current_state == '>=7' and test_array[i] < 7:
        current_state = 'mid'
        results_array.append((i,current_state))            

    if current_state == '<=3' and test_array[i] > 3:
        current_state = 'mid'
        results_array.append((i,current_state))

print results_array

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

...