爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 25807|回复: 24

[经验总结] python怎么实现计算区域平均时加上面积权重

[复制链接]

新浪微博达人勋

发表于 2021-10-20 13:13:41 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 西红柿毛毛雨 于 2023-4-3 22:00 编辑

求助各路大神指导,计算区域平均时,说是还要算面积加权平均,请问python有直接的函数或方法可以实现吗???
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2021-10-21 19:07:52 | 显示全部楼层
本帖最后由 西红柿毛毛雨 于 2023-4-3 21:52 编辑
louke 发表于 2021-10-20 21:37
同问,我也想了解这些

#计算面积权重
lat=f['latitude'][60:90]#纬度区域
lat = np.array(lat)
coslat = np.cos(np.deg2rad(lat)) #np.deg2rad将角度转化为弧度,np.cos求某个函数的cos值
wgts =np.array(coslat)
sst_mean=np.average(area,axis=1,weights=wgts, returned=False)#“对纬度进行加权平均,我的原始数据是三维的,axis=1就是对lat进行加权平均”
sst_mean=np.nanmean(sst_mean,axis=1)  ##第二次平均axis=1,是对lon进行平均,因为axis=0是我的时间维,最后剩下时间维,得到一串时间序列

这是我能想到的笨办法~~~
密码修改失败请联系微信:mofangbao
回复 支持 3 反对 0

使用道具 举报

新浪微博达人勋

发表于 2021-10-20 21:37:19 | 显示全部楼层

回帖奖励 +10 金钱

同问,我也想了解这些
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-5-5 17:59:37 | 显示全部楼层
同问,我也想知道
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-9-8 11:33:37 | 显示全部楼层

回帖奖励 +10 金钱

西红柿毛毛雨 发表于 2021-10-21 19:07
#计算面积权重
lat=f['latitude'][60:90]#纬度区域
lat = np.array(lat)

为什么要对axis=1进行加权呢,不应该对纬向加权吗,就是axis=0.
另外,为什么要计算两次平均,np.average和np.mean。谢谢了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-9-8 11:36:03 | 显示全部楼层
np.average可以处理缺测值吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-9-13 13:41:00 | 显示全部楼层
紫藤萝 发表于 2022-9-8 11:33
为什么要对axis=1进行加权呢,不应该对纬向加权吗,就是axis=0.
另外,为什么要计算两次平均,np.averag ...

首先面积权重,主要是纬度的差异,也就是经向上的差别,所以axis=1,来算经向上的面积权重。
计算两次平均,是因为np.average()函数只能对一个轴做加权平均,意思就是先对纬度经向加权平均后,再做一次平均,得到最后你想要的区域平均值。~~这个办法有点笨,但也不知道其他办法
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-9-13 13:46:59 | 显示全部楼层
紫藤萝 发表于 2022-9-8 11:36
np.average可以处理缺测值吗

应该不行吧,不太清楚,我在带入函数时,已经处理过数据了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-9-22 14:01:48 | 显示全部楼层
西红柿毛毛雨 发表于 2022-9-13 13:41
首先面积权重,主要是纬度的差异,也就是经向上的差别,所以axis=1,来算经向上的面积权重。
计算两次平 ...

第二次平均应该是axis=0吧
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-9-27 16:34:08 | 显示全部楼层
紫藤萝 发表于 2022-9-22 14:01
第二次平均应该是axis=0吧

average()函数中axis所表示在元组中指定的所有轴上执行平均,而不是像以前那样在单个轴或所有轴上执行,所以第一次加权平均后得到的是一列一维数据,所以第二次用mean()计算平均时还是axis=1
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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