python - 如何在metpy 1.0版中使用vorticiy计算?
问题描述
我想用metpy.calc.vorticity
。以前,它的结构是(u, v, dx, dy)
,但改为(u, v, *, dx=None, dy=None, x_dim=- 1, y_dim=- 2)
。
- 什么是
*
新结构? - 当我使用
(u, v)
时,似乎其他参数是可选的,我面临ValueError: Must provide dx/dy arguments or input DataArray with latitude/longitude coordinates.
- 当我使用
(u , v, dx, dy)
时,我面对TypeError: too many positional arguments
。
但是,我的代码和数据没有问题geostrophic_wind(height,dx,dy,latitude)
,但是涡度有什么问题?我的代码的某些部分如下:
PATH_nc = '/home/python_script/'
out_fff='gfs.t12z.pgrb2.0p50.f168'
ncfile = Dataset('{}{}.nc'.format(PATH_nc,out_fff))
lon = ncfile.variables['longitude'][:]
lon[lon < 0] = 360 + lon[lon < 0]
lat = ncfile.variables['latitude'][:]
dx, dy = mpcalc.lat_lon_grid_deltas(lon, lat)
long1, lat1 = np.meshgrid(lon, lat)
hght_850 = ncfile.variables['HGT_850mb'][:]
HGT_850 = gaussian_filter((hght_850)/10, sigma= 2)
height850 = ndimage.gaussian_filter(hght_850, sigma=1.5, order=0)
geo_wind_u_850, geo_wind_v_850 = mpcalc.geostrophic_wind(np.squeeze(height850)*units.m, dx, dy, lat1)
vwnd_700 = units('m/s') *ncfile.variables['VGRD_700mb'][:]
avor700 = mpcalc.vorticity(np.squeeze(uwnd_700), np.squeeze(vwnd_700), dx, dy)
我希望编写与问题相关的代码的所有必要部分。我会感谢任何帮助。
解决方案
所以在 的定义中vorticity
:
metpy.calc.vorticity(u, v, *, dx=None, dy=None, x_dim=-1, y_dim=-2)
之后的所有*
内容都定义为仅关键字参数,这意味着函数参数/参数只能通过关键字传递。因为您当前的代码不是通过关键字dx
,dy
而是通过位置,所以这是由于您得到的错误是:TypeError: too many positional arguments
. 解决方法是传递dx
和dy
使用关键字参数:
avor700 = mpcalc.vorticity(np.squeeze(uwnd_700), np.squeeze(vwnd_700), dx=dx, dy=dy)
推荐阅读
- python-3.x - Matplotlib 归零的刺在平移时伸出轴外
- python - 如何根据从文本文件导入的数据创建 Python 字典?
- api - 在 asp.net API HttpGet{id} 有效,但是当我将 {id} 更改为其他内容时,它不起作用
- ios - WKExtendedRuntimeSession 在大约 30 秒后停止?
- typescript - 如何清除 NextJs GetStaticPaths 缓存/“取消发布”动态路由?
- ios - Xcode 12.3 命令协同设计失败,退出代码为非零
- c# - C# helpProvider SetHelpString 不支持 unicode
- python - 如何在不和谐中使用 exec() 发送消息
- javascript - 在 ScalaJS 中将 DOM 元素传递给第 3 方类构造函数失败
- php - 如何使更新端点更通用?(PHP)