2014-12-12 3 views
1

저는 파이썬을 처음 접했고 지금까지이 사이트에서 답을 찾지 못했습니다.파이썬 numpy polyfit 함수

루프에서 numpy.polyfit을 사용하고 있으며 아래와 같이 오류가 발생하고 디버그에서 코드를 실행할 때와 같이 잘 작동하지 않으며 함수에 들어가는 배열의 len이 동일하다는 것을 이해하지 못합니다 :

Error Runtime exception: TypeError: expected x and y to have same length

내 코드는 다음과 같습니다 : 내가 잘못 뭐하는 거지

import numpy as np 
    from collections import defaultdict 
    bb = [ 10, 11, 12, 22, 10, 11, 12, 11, 10, 11, 12, 22, 10, 11, 12, 11, 10, 11, 12, 22, 10, 11, 12, 11, 10, 11, 12, 22, 10, 11, 12, 11, 10 ] 
    i = 0 
    b = -3 
    bb_gradient = defaultdict(dict) 
    while (b <= 0): 
     print i 
     print len(range(3)) 
     print len(bb[b-3:b]) 
     bb_gradient[i][0], _ = np.polyfit(range(3), weekly_bb_lower[b-3:b], 1) 
     i += 1 
     b += 1 

?

미리 감사드립니다.

+0

이 경우 'weekly_bb_lower'는 무엇입니까? 그것없이 프로그램을 실행할 수 없습니다. – ErikR

답변

0

나는 bbweekly_bb_lower이라고 가정합니다. while (b <= 0)while (b < 0)으로 변경하십시오. b이 0이되면 weekly_bb_lower[-3:0]은 빈 목록을 반환합니다. list[-n:0]은 비어 있어야합니다. 당신은 당신의 목록의 시작으로 마지막 세 가지 요소를 이동하여 빈 목록을 참조 피할 수

+0

아! 그 변수를 잊어 버렸습니다 !! 미안합니다. 그렇지 않으면 고마워, 너의 제안을 시도 할게. – Andrew

+0

아니요, list [-n : 0]이 비어 있지 않아야합니다. – Andrew

+0

'list [-n]'과 같은 파이썬에서 음수 인덱스를 사용하는 것은'list [len (list) -n]'의 약식입니다. 이제'bb [-3 : 0]'이 무슨 뜻인지 알아내는 것이 좋습니다. – Prashanth

0

:

import numpy as np 
from collections import defaultdict 
bb = [ 10, 11, 12, 22, 10, 11, 12, 11, 10, 11, 12, 22, 10, 11, 12, 11, 10, 11, 12, 22, 10, 11, 12, 11, 10, 11, 12, 22, 10, 11, 12, 11, 10 ] 
bb = bb[-3:] + bb[:-3] # moves the last three elements of the list to the start prior to looping 
bb_gradient = defaultdict(dict) 
for i in range(3): 
    bb_gradient[i][0], _ = np.polyfit(range(3) , bb[i:i+3], 1) 

프라 샨스의 설명은 정확합니다.

+0

고마워? 나에 의한 어리석은 실수. 다시 한 번 감사드립니다! – Andrew