首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >metpy.units函数有问题吗?

metpy.units函数有问题吗?
EN

Stack Overflow用户
提问于 2020-05-19 23:50:36
回答 2查看 401关注 0票数 2

我正在尝试使用metpy.calc函数,但是每次我尝试使用metpy.units分配单位时,它都不会运行。如果我让它继续运行几个小时,它就会停在那里。metpy函数过去在相同的数据集上对我来说工作得很好,但由于某种原因不再工作。我已经尝试更新了metpy和spyder,还使用了多台笔记本电脑,以确保它不只发生在一台笔记本电脑上。我还尝试了两种不同的方式使用metpy.units。它使用单位(‘kg/kg’)运行,但实际上不会将单位分配给数组。对如何让它工作有什么想法吗?

这是我的代码:

代码语言:javascript
复制
import numpy as np 
import matplotlib.pyplot as plt
from netCDF4 import Dataset
import metpy
import metpy.calc as mpcalc
from metpy.units import units

f = Dataset('C:/Users/hkenward/Desktop/MS/cm1out.nc', mode = 'r', format="NETCDF4")
mrv=f.variables['qv'][:]
pt=f.variables['th'][:]
p=f.variables['prs'][:]
p=p/100.
mrv=mrv*units('kg/kg')
p=p * units.hPa
pt=pt*units.kelvin

e=mpcalc.vapor_pressure(p,mrv)
Td=mpcalc.dewpoint(e)
T=mpcalc.temperature_from_potential_temperature(p, pt)
Te=mpcalc.equivalent_potential_temperature(p, T, Td)
EN

回答 2

Stack Overflow用户

发布于 2020-05-23 01:07:58

这是一个与Pint unit框架(由MetPy使用)和掩码数组(这是netCDF4-python默认输出的)的兼容性问题。最简单的解决办法是将左侧的单位相乘,如下所示:

代码语言:javascript
复制
pt = units.kelvin * pt

这让一切都能正常工作。希望通过使用像Xarray这样的东西,这样的事情在未来会变得更好。

票数 2
EN

Stack Overflow用户

发布于 2020-05-19 23:59:24

metpy.calcmetpy.units对我来说很好(here on Repl.it):

代码语言:javascript
复制
import metpy.calc as mc
from metpy.units import units

print(mc.density(
  pressure=(1500 * units.pascal),
  temperature=(26 * units.celsius),
  mixing=0.5,
))

输出

代码语言:javascript
复制
0.014524968314683053 kilogram / meter ** 3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61895233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档