2014-02-28 3 views
0

netCDF 파일의 큰 데이터 세트에 품질 제어 필터를 적용하려고합니다. netCDF에는 nstorms라는 차원이 있습니다. 여기서 lat, lon, date 및 각 nstorm 값과 관련된 다른 변수가 있습니다 (여기서 nstorm은 0에서 230348까지입니다). 품질 관리를 적용하기 위해 나는 현재의 경우와 다른 문과 루프를 사용하고 있습니다 :else 문을 사용하여 변수 및 배열 정의 - Python

for i in range(len(lowerBound)): 
    if min37[i] >= lowerBound[i] and min37[i] < upperBound[i]: 
    nstorms_bad = i 
    print nstorms_bad 
    else: 
    nstorms_good = #everything else - all the other 'i' values 
    print nstorms_good 
    #Put values for nstorms_good into an array 

LOWERBOUND가 nstorms과 같은 크기이며, 모두 nstorms부터하고 값이 nstorms_bad = i에 대해 반환 0에서 시작 LOWERBOUND netCDF의 잘못된 데이터와 일치합니다 (즉, nstorms_bad에 대해 반환 된 처음 몇 개의 값은 306, 408, 486이며이 값은 netCDF 파일의 nstorms 306, 408 및 486과 관련된 잘못된 데이터와 일치 함).

내가 겪고있는 문제는 좋은 nstorms 값이 필요하고 배열에 넣을 필요가있어서 netCDF 파일로 돌아가 nstorms_good의 각 값을 각각의 변수 데이터 (lat, lon, time, etc ...). nstorms_good = i을 설정하면 품질 제어가 적용되지 않은 채로 모든 i 값 목록 만 표시됩니까? nstorms_good을 정의하는 가장 좋은 방법은 잘못된 것 (i을 사용하여 실제 nstorm과 일치 함)을 제외하고 i 값을 모두 포함하고 그 값을 모두 배열에 저장하는 방법입니다. nstorms_bad을 배열로 설정하고 nstorms_good에 0 ~ 230348의 숫자가 포함 된 새 배열을 만든 다음 두 배열을 비교하는 것이 더 쉬울까요?

답변

1

나중에 모두 반복해야합니다. nstorms_good. 따라서 모든 컨테이너는 다음을 수행합니다. list, dict 또는 set입니다.

nstorms_good에 대한 몇 가지 추가 데이터를 저장할 수 있도록 할 dict를 사용하지만, 당신이 정말로에만 인덱스를 필요로하기 때문에, 나는 목록을 갈 것 :

nstorms_good = [] 
for i in range(len(lowerBound)): 
    if min37[i] >= lowerBound[i] and min37[i] < upperBound[i]: 
    ... 
    else: 
    nstorms_good.append(i) 

# process 
for nstorm in nstorms_good: 
    ... 
+0

고마워요! 이것은 훌륭하게 작동했습니다! – mbreezy

0

당신이 원하는 것은 폭풍 데이터 목록에있는 나쁜 폭풍과 관련된 모든 색인과 good_storms와 관련된 색인이 모두있는 두 개의 목록입니다. 이것은 다음과 같을 것입니다

god = [] 
bad = [] 
for i in range(len(lowerBound): 
    if min37[i] >= lowerBound[i] and min37[i] < upperBound: 
    bad.append(i) 
    else: 
    good.append(i) 

이제 두 목록을 반복하여 적절한 참조를 얻을 수 있습니다.

+0

감사합니다! 이것은 확실히 많은 도움이되었습니다! – mbreezy

관련 문제