2014-02-17 6 views
1

이 간단한 질문을 믿고 상대적인 주제를 찾았지만 옳은 것을 찾지 못했습니다.NaN python과 두리스트의 비교

저는 몇 가지 기준을 계산하여 통계 분석을 수행해야하는 두 개의 NumPy 배열이 있습니다. 예를 들어 상관 계수와 Nash 기준 (누구에게 Nash에 익숙한 지)입니다. 첫 번째 배열에는 관측 데이터가 있고 (두 번째는 시뮬레이션 결과 임), NaN이 있습니다. 내 프로그램에서 첫 번째 배열의 값이 NaN 인 값 쌍을 무시할 때 기준을 계산하길 원합니다. 마스크 방법을 시도했습니다. 첫 번째 배열 (예 : 평균값을 계산할 때) 만 처리하면되지만 두 배열 값을 값으로 비교할 때 제대로 작동하지 않으면 잘 작동합니다.

누구에게 도움을 줄 수 있습니까? 감사!

+3

일부 코드를 추가하고 문제가있는 곳을 알려주십시오. –

+0

관련이있을 수 있습니다 : [NaN을 포함하는 numpy 배열을 비교] (0120-998-304) –

+0

같은 길이와 값이 하나씩 일치합니다 (매 시간마다 관찰 값과 시뮬레이션 값이 있습니다). obs에는 관찰 데이터가없는 시간 단계에 대한 NaN이 있습니다. 이제 저는 두 배열의 상관 계수를 계산해야합니다. 즉, 다른 모든 것들 중에서, 모든 시간 단계 i, (obs [i] -sim [i]) ²를 계산해야 함을 의미합니다. obs [i] = NaN의 경우이 방정식은 NaN을 제공합니다. 그래서 obs [i]와 NaN을 무시해야합니다. 하지만 어떻게 해야할지 모르겠다. 그래서 어떤 코드도 보여줄 수 없다 ... – user3306110

답변

0

비슷한 질문에 대답했습니다. Numpy only on finite entries. 배열에서 NaN 값을 Numpy의 isnan 함수로 바꿀 수 있습니다. 이는 NaN 값을 처리하는 일반적인 방법입니다.

import numpy as np 

replace_NaN = np.isnan(array_name) 
array_name[replace_NaN] = 0 
+1

'np.nan_to_num (array_name)'은 코드와 동일합니다. – zhangxaochen

+0

네, 다른 것은 isnan과 같은 일을합니다. – user1749431

+0

안녕하세요, NaN을 0으로 바꾸면 확실히 NaN이 생기지 않습니다. 하지만 실제로 계산 된 결과는 0입니다. 사실 초기 NaN은 관찰 데이터가없는 시간 단계이므로 분석을 위해 이러한 단계를 무시해야합니다. 이 경우 0은 값이지만 잘못된 값입니다. 당신은 모든 0을 무시하는 프로그램을위한 조건을 만들어야한다는 것을 제외하고는? – user3306110