27.1 기상·기후 데이터의 기초

실습 · 연습문제 2개

결측이 있는 격자의 위도 가중 평균 lat-weighted-mean

위경도 격자에서 칸의 면적은 cos⁡φ\cos\varphi(φ\varphi는 칸 중심의 위도)에 비례한다. 함수 weighted_mean(field, lat_deg)를 완성해 마지막 두 축(위도, 경도)에 대한 면적 가중 평균을 반환한다.

인자 shape 설명
field (..., nlat, nlon) 격자 값. 결측은 NaN
lat_deg (nlat,) 칸 중심 위도 [도]
  • 앞쪽 축(시간 등)은 그대로 남긴다. 반환 shape은 field.shape[:-2]이다(2차원 입력이면 스칼라).
  • 결측 칸은 분자와 분모 모두에서 뺀다. 가중치를 남은 칸에 대해 다시 정규화한다는 뜻이다.
  • 모든 칸이 결측이면 NaN을 반환한다.
xˉ=∑i,jmijcos⁡φi xij∑i,jmijcos⁡φi,mij={1xij가 유효0xij가 결측\bar{x} = \frac{\sum_{i,j} m_{ij}\cos\varphi_i\, x_{ij}}{\sum_{i,j} m_{ij}\cos\varphi_i}, \qquad m_{ij} = \begin{cases}1 & x_{ij}\text{가 유효}\\ 0 & x_{ij}\text{가 결측}\end{cases}

힌트: 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]처럼 정수 배열로 인덱싱하면 각 시점에 맞는 달의 기후값이 한 번에 나온다.