실습 · 연습문제 2개
결측이 있는 격자의 위도 가중 평균 lat-weighted-mean
위경도 격자에서 칸의 면적은 (는 칸 중심의 위도)에 비례한다. 함수 weighted_mean(field, lat_deg)를 완성해 마지막 두 축(위도, 경도)에 대한 면적 가중 평균을 반환한다.
| 인자 | shape | 설명 |
|---|---|---|
field |
(..., nlat, nlon) |
격자 값. 결측은 NaN |
lat_deg |
(nlat,) |
칸 중심 위도 [도] |
- 앞쪽 축(시간 등)은 그대로 남긴다. 반환 shape은
field.shape[:-2]이다(2차원 입력이면 스칼라). - 결측 칸은 분자와 분모 모두에서 뺀다. 가중치를 남은 칸에 대해 다시 정규화한다는 뜻이다.
- 모든 칸이 결측이면
NaN을 반환한다.
힌트: np.isnan으로 마스크를 만들고, np.where로 결측을 0으로 바꾼 값과 마스크를 곱한 가중치를 함께 더한다.
월별 기후값과 편차 monthly-anomaly
월별 시계열에서 기후값(climatology)은 기준 기간에서 같은 달끼리 모아 낸 평균이고, 편차(anomaly)는 각 값에서 그 달의 기후값을 뺀 것이다. 함수 monthly_anomaly(values, month, base)를 완성해 (anom, clim)을 반환한다.
| 인자 | shape | 설명 |
|---|---|---|
values |
(T,) 또는 (T, ...) |
월별 값. 결측은 NaN |
month |
(T,) |
0(1월)–11(12월) 정수 |
base |
(T,) |
기준 기간이면 True인 불리언 마스크 |
clim의 shape은(12,) + values.shape[1:]이다. 기준 기간의 결측은 평균에서 뺀다(np.nanmean).anom은values와 shape이 같다. 모든 시점(기준 기간 밖 포함)에서 그 달의 기후값을 뺀다.- 기후값은 기준 기간만으로 계산한다. 평가 기간을 섞으면 평가 대상의 정보가 기준에 새어 들어간다.
힌트: clim[month]처럼 정수 배열로 인덱싱하면 각 시점에 맞는 달의 기후값이 한 번에 나온다.