2014-12-13 2 views
1

나는 파이썬을 배우려고 노력하고 있고 시작하여 나는 다음 목록은 0에서 4 다항식의 순서로 numpy.polyfit 함수의 계수 function.So 제곱 오차와 피팅 다항식 곡선을 impliment 생각 :배열을 배열에 저장하는 것이 좋은 방법입니까?

[array([-0.01819394]), array([-1.40744691, 0.68552951]), array([ 0.80998048, -2.21742739, 0.80552662]), array([ 22.23999663, -32.55001446, 10.44015094, 0.03673661]), array([ -2.85384060e+00, 2.79476778e+01, -3.61085071e+01, 
    1.11448029e+01, 1.79458912e-02]), array([ -5.89070987e+01, 1.44413906e+02, -1.00532825e+02, 
    9.34450117e+00, 5.69193834e+00, 7.78017045e-02])] 

출력은 다음 코드에서이다 :

polyfit = [] 
for i in range(0,numberofdata): 
    polyfit.append(numpy.polyfit(x,noisedsignal,i)) 

그것은 각 주문의 제곱 오차를 찾는 후 네 방법을 순서대로 각 값을 얻을 경우 이러한 결과를 나열 할 수있는 좋은 방법으로 간주되어 있습니까?

+0

왜이 작업을 수행하고 있습니까?배열을 사용하여 무엇을하고 있는지 알지 못하면 단 하나의 확실한 답을 줄 수는 없습니다 (목록이 아닌 배열을 사용하는 이유). – Blckknght

+0

배열을 "호출"한다는 것이 정확히 무엇을 의미합니까? – NPE

+0

내가 불분명하면 죄송합니다. 질문을 편집했습니다. –

답변

-2

튜플에 포함 된 튜플이있는 목록이 있습니다. 정말로 필요하지 않습니다. 무엇보다도 튜플을 정의하는 이유는 무엇입니까?

배열 ([- 0.01819394])은 목록이있는 튜플입니다.

튜플 프로세스는 목록 프로세스보다 빠릅니다. 그러나 튜플은 변경 될 수없는 변수입니다. 일반적으로 목록을 사용하므로 목록간에 요소의 속도 차이가 없으며 목록 요소를 변경할 수 있습니다.

list=[array([-0.01819394]),array([-1.40744691, 0.68552951]),...] 
print (list[1][1]) 

그것은리스트의 두 번째 요소의 두 번째 요소를 의미한다 -

는 예를 들어, 당신이 배열 0.68552951 ([1.40744691, 0.68552951])를 호출 할.

+0

여기에는 튜플이 없습니다. 'array ([bla])'는 numpy 배열 일 가능성이 높습니다. – filmor

0

아니요, 그렇지 않습니다.

당신은 같은 일을 수행해야합니다

your_variable = [[-0.01819394], [-1.40744691, 0.68552951], [0.80998048, -2.21742739, 0.80552662], [22.23999663, -32.55001446, 10.44015094, 0.03673661] [-2.85384060e + 00, 2.79476778e + 01, -3.61085071e + 01, 111448029e + 01, 1.79458912e-02], [-5.89070987e + 01, 1.44413906e + 02, -1.00532825e + 02, 9.34450117e + 00, 5.69193834e + 00, 7.78017045e-02]]

이제

몇 가지 요소를 검색하기 위해, 당신은 당신이 기본 Py를 함께 작동합니다 길을 갈 thon리스트 (배열) 객체. your_variable[1][1]처럼

0.68552951 줄 것이다 your_variable[4][2]이 완벽하게 괜찮 -3.61085071e+01

1

줄 것이다. 처음부터 얼마나 많은 것을 할 것인가? 2 차원 배열을 사용하는 것이 합리적 일 수 있습니다.

어쨌든 polyfit의 결과는 fitted polynomial을 평가하는 numpy.polyval 함수에서 직접 사용할 수 있습니다. 또한 다항식을 인쇄하려면

for p in polyfits: 
    print(" + ".join(
         "%s x ** %s" % (coeff, len(p) - n - 1) 
         for n, coeff in enumerate(p) 
        )) 

과 같이 할 수 있습니다. 여기에 목록을 사용하는 데는 아무런 관련 페널티가 없습니다.

관련 문제