爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 19323|回复: 2

[求助] MetPy计算散度的时候出现too many positional arguments报错

[复制链接]

新浪微博达人勋

发表于 2021-7-28 11:28:24 | 显示全部楼层 |阅读模式

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

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

x
代码如下,一直出现TypeError: too many positional arguments的报错,找不到问题出现在哪里。看了气象家园其它的帖子,可能内部参数强制分配的问题(u=u,v=v,dx=dx,dy=dy,dim_order='yx'),但是删掉dim这个参数还是报一样的错误。各位大佬知道是什么问题吗?
import numpy as np
import matplotlib.pyplot as plt
import xarray as xr
from scipy.ndimage import gaussian_filter
import metpy.calc as mpcalc
import cmaps
from metpy.units import units
import cartopy.crs as ccrs
import cartopy.feature as cf
import cartopy.io.shapereader as shpreader
from cartopy.mpl.ticker import LongitudeFormatter,LatitudeFormatter
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
import matplotlib.ticker as mticker
import math

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

ds = xr.open_dataset('h:/20200626/era5/era5.nc')
lat = ds['latitude']
lon = ds['longitude']
lev = ds['level']
u=ds['u'][:][:][:][:] #时间、高度、纬度、经度
v=ds['v'][:][:][:][:]
w=ds['w'][:][:][:][:]
vor=ds['vo'][:][:][:][:]
dx,dy=mpcalc.lat_lon_grid_deltas(lon,lat)
div=mpcalc.divergence(u,v,dx,dy)
print(div.shape)

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2021-7-28 18:09:15 | 显示全部楼层
你的metpy应该也升级到1.0了
其实不是这个版本,稍早前的几个小版本就改了位置参数的数量和类型。现在应该是
mpcalc.divergence( u , v , dx=ddx , dy=ddy ,xdim=-1 ,ydim=-2)
其中u和v就不说了。dx是位置参数关键字,ddx是你算出来的差分距离(我数学不好,你应该能懂我的意思),纬向同。后面的dim_order 换成了xdim ,ydim,默认位置参数就是-1和-2,写不写均可。
例如计算水汽通量散度:
qdiv = mpcalc.divergence(q*u850/g ,q*v850/g ,dx=dx,dy=dy, x_dim=-1, y_dim=-2)
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

发表于 2021-9-23 22:08:16 | 显示全部楼层
固定时间维和高度试试,mpcalc.divergence计算的应该是二维的,计算多维的散度可以在外部加for循环
密码修改失败请联系微信:mofangbao
回复 支持 0 反对 1

使用道具 举报

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

本版积分规则

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

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

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