2017-10-09 3 views
0

저는 Python에 익숙하며 데이터에서 MSE (Mean Squared Error)를 구현하려고합니다. 목록의 각 요소에 액세스하려고하고 평균에서 원본 데이터를 뺀 후 마지막 단계에서 별도의 단계을 끝내려고합니다. 그래서 결국 그것을 요약하여 전체 요소 수로 나눕니다. 명부.Python : 목록의 각 요소에 액세스하여 새 목록에 추가하는 방법

지금은 목록의 각 요소에 액세스하여 차이점을 찾아 새로 만든 목록 인 newList에 넣으려고합니다. 이것은 내가 목록에서 플로트를 뺄 수 없다는 형식 오류 내게 준, 내가 그러나

for i in range(len(X)): 
    newList[i] = X[i] - mean 

일을 시도, 처음

for i in range(len(X)): 
    newList[i] = X[i] - tempList[i] 

:

여기에 내 현재 코드입니다.

그래서 내가 tempList라는 새로운 목록을 시도하고이 일을하여 목록에 평균 값을 넣어 :

for i in range(len(X)): 
    tempList.insert(i, mean) #now my tempList contains [3.995, 3.995, 3.995 ....., 3.995] 

지금은 나에게 같은 형식 오류주고있다 : 지원되지 않는 피연산자 유형 (들)을 - : 'list'와 'float'.

나는 자바와 다른 C 언어에 익숙하며 목록의 각 요소를 편집하는 방법이라고 생각하지만 파이썬은 분명히 다르다.

모든 도움말을 크게 높이세요.

미리 감사드립니다.

+0

를 사용할 수 있습니까? – Xorgon

+0

@ Xorgon X는 [[3.0], [2.5], [5.0], ...., [1.5]] – cohsta

+2

과 같은 부동 소수점 목록이있는 데이터 목록입니다. 파이썬에서 무엇인가가 대괄호 안에 있다면 그것은 목록입니다. 그래서 당신이 X [i]를 할 때 그것은 다른 목록을 반환합니다. 이 예에서 X [0] = [3.0]은 길이 1 (X [0] [0] = 3.0)의 목록입니다. 이 작업을 수행하는 대신 단순히 X를[3.0, 2.5, 5.0, ..., 1.5] 구문을 사용하여 float 목록으로 정의하십시오. – Xorgon

답변

1

코드의 다른 곳에서 문제가 발생하여 유형 오류가 발생합니다. 귀하가 보여준 내용은 전적으로 합법적입니다.

X = [ 2, 12, 85, 0, 6 ] 
    tempList = [ 3, 4, 3, 1, 0 ] 
    newList = list([0] * len(X)) 

    for i in range(len(X)): 
     newList[i] = X[i] - tempList[i] 

    print(newList) 

어쨌든, 다시 원래의 질문에, 당신은 어떻게 당신이 X의 목록을 작성하는 기능적인 스타일

X = [ 2, 12, 85, 0, 6 ] 
    mean = sum(X)/float(len(X)) 
    print(mean) 

    Y = map(lambda x: x - mean, X) 
    print(Y) 
+1

이 경우리스트의 이해력이 훨씬 더 좋을 것입니다 :'[x - X in X in] ' –

+0

@ juanpa.arrivillaga 물론, 당신 말이 맞습니다! 나는 최근에 스칼라를 너무 많이 했어. –

관련 문제