python에서 이전 결과값을 이용하여 현재 계산값을 계산할때(재귀연산) 벡터화가 가능한가요 ?
조회수 668회
안녕하세요. 임베디드만 하다가 python은 이번에 처음으로 시작하고 있습니다.
계측한 3개의 input값을 이용해서 estimation된 출력값을 구하려는 목적인데, 공식이 좀 복잡하네요. data는 csv 형태로 입력받아 pandas dataframe에 저장하여 읽어서 사용하고 있습니다.
입력값은 x1, x2, x3의 3가지이고 최종 출력값은 y입니다.
입력과 출력을 제외한 다른 변수들은 계산을 위한 임시값입니다.
이 값들은 다음과 같은 연산을 만족합니다.
a□ : 상수
input[n] = a0 * x1[n] * x2[n]
loss1[n] = a1 * (temp[n - 1] ** 4 - x3[n] ** 4)
loss2[n] = a2 * x2[n] * (temp[n - 1] - x3[n])
loss3[n] = a3 * x3[n] * (temp[n - 1] - x3[n])
temp[n] = temp[n - 1] + (input[n] - (loss1[n] - loss2[n] - loss3[n])) * a4
radi[n] = a5 * loss1[n] if x1[n] == 0 else a6 * input[n]
loss4[n] = a7 * (y[n - 1] - x3[n])
y[n] = (radi[n] - loss4[n]) * a8 + y[n - 1]
이 문제를 해결하기 위해 for loop를 사용하였으나 data의 갯수가 2971000line이 되니 값을 구하는데 속도가 너무 느리네요.
벡터화를 하면 빠르다고 들어서 벡터화를 시도 하였으나 [n-1]값이 [n]에 제대로 반영되지 않는듯한 결과가 나왔습니다.
for loop를 사용하지 않고 빠르게 계산할 수 있는 방법이 있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
댓글 입력