爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 14664|回复: 3

[源代码] xarray 提取每年夏季的数据

[复制链接]

新浪微博达人勋

发表于 2022-10-3 14:00:58 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
最近在整理2014年至2020年每年夏季(6、7、8月份)Hadley海温数据,使用的数据格式是netcdf,工具是Python+xarray,现在我把提取每年季节数据的代码分享给大家。可能还有更好的方法,也请大家多多指正:

#首先引入xarray
import xarray as xr

#打开 netcdf 文件
file = xr.open_dataset('./HadISST_sst.nc')
# 读取文件中的时间和海温,并输出时间结果
time = file['time']
sst   = file["SST"]
time

# 我们可以看到,time变量是从1870年1月16日至2020年7月16日,time变量具有year,month,season等属性,用以下命令可以查看
time.dt.year
time.dt.month
time.dt.season

# 下面提取2014年至2020年每年夏季(6、7、8月份)的数据,注意每个逻辑连接符之间的括号不能少,否则会出bug
time_series = time.loc[(time.dt.season=='JJA') & ( (time.dt.year >= 2014) & (time.dt.year <= 2020) ) ]
time_series
# 这样便可提取相应的时间序列,下面提取海温数据,输出结果如下
sst_select = sst.sel(time=time_series)
sst_select

# 同样也可以利用slice函数提取想要的区域,比如南海地区(大致105°E~123°E,5°N~23°N)
sst_2 = sst_1.sel(latitude=slice(23, 5), longitude=slice(104, 125))  # 文件中的latitude是从大往小变化
sst_2

##############################################
以上便是全部内容啦,我看到家园里有一个类似的问题,链接如下:
xarray怎样从逐月数据文件挑选部分年的冬季数据做逐年季节平均?-编程作图-气象家园_气象人自己的家园 (06climate.com)
网上也有说groupby也可以实现,但是我没有弄明白,也希望各位大佬多指点迷津
本文的海温数据太大,我把链接放在下面,欢迎各位朋友测试代码
Met Office Hadley Centre observations datasets

1.png
2.png
3.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2022-10-4 08:50:10 | 显示全部楼层
本帖最后由 GXYYYYY 于 2022-10-4 08:54 编辑

下面那个问题我正好最近也碰到了,我是这样做的:
La_pIPO = pd.to_datetime(pd.Series(data = ["1983-12-01","1984-08-01","1984-12-01",
"1985-08-01","1988-12-01","1989-08-01","1995-12-01",]))

hgt_LapIPO = list("abcdefg")

for i in range(0,len(La_pIPO),2):
   hgt_LapIPO[i//2] = hgt_clim.loc[La_pIPO:La_pIPO[i+1],:,:] ###hgt_clim就是初始读的hgt数据

这样把需要的年份整合成了一个list,后续也可以进行操作了,不过肯定还有更简单的办法

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-10-4 10:15:56 | 显示全部楼层
GXYYYYY 发表于 2022-10-4 08:50
下面那个问题我正好最近也碰到了,我是这样做的:
La_pIPO = pd.to_datetime(pd.Series(data = ["1983-12- ...

嗯嗯,毕竟没有特定规律的年份,生成list应该是很快的。我也试过生成list这种方法,不过我选取的年份连续,季节什么的也比较有规律,所以用sel就简单一些。不过应该还有更简单的方法
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-10-4 13:57:14 | 显示全部楼层
这已经是很简洁的办法了啊,biubiu大佬的方法是先选取需选取数据的开始到结束,然后再选取特定月份。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表