metpy.units函数有问题吗?

我试图使用metpy.calc函数,但是每次我尝试使用metpy.units分配单位时,它都不会运行。如果我允许的话,它将坐在那里并继续运行几个小时。过去,对于相同的数据集,metpy函数对我来说工作得非常好,但是由于某种原因将不再起作用。我尝试过更新metpy和spyder,并且还使用了多台笔记本电脑来确保它不仅仅发生在一个笔记本上。我还尝试了两种不同的方法metpy.units。它使用单位('kg / kg')运行,但实际上不会将单位分配给数组。关于如何使它起作用的任何想法?

这是我的代码:

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)
geiwoaidechibang 回答:metpy.units函数有问题吗?

这是Pint单元框架(由MetPy使用)和掩码数组(默认为netCDF4-python吐出的)的兼容性问题。最简单的解决方法是将左侧的单位相乘,如:

pt = units.kelvin * pt

这使一切正常。希望通过使用Xarray之类的东西在将来会变得更好。

,

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

import metpy.calc as mc
from metpy.units import units

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

输出

0.014524968314683053 kilogram / meter ** 3
本文链接:https://www.f2er.com/2318530.html

大家都在问