超友好!气象 Python 训练营 ③ 关卡1
Q1:
读取 FNL 再分析资料中 2021 年 1 月 1 日 0 时地表以上2m温度的二维数组。从该数组中,取出每个维度里索引号都属于斐波那契数列(即截取该数组每个维度里索引号为0,1,1,2,3,5…的部分)的数组。然后计算新的数组中,温度大于等于 0℃ 格点的平均温度(单位:摄氏度),然后取整。
正常做法
def fib(n):
if n == 1:
return [1]
if n == 2:
return [1, 1]
fibs = [1, 1]
for i in range(2, n):
fibs.append(fibs[-1] + fibs[-2])
return fibs
import xarray as xr
import numpy as np
data = xr.open_dataset('/home/mw/input/fnl6384/fnl/fnl_20210101_00_00.grib2',engine="pynio")
t = data['TMP_P0_L103_GLL0'].loc[2,:,:]
fibs_row = fib(12)
fibs_col = fib(13)
t = t[fibs_row,fibs_col]-273.15
a1 = int(t.where(t>0).mean())
不正常做法
a1 = 9