如何将Metpy输出转换为Numpy变量并提取风向值复用?
提取Metpy风向计算结果为Numpy数组
Metpy的mpcalc.wind_direction返回的是带物理单位的Quantity对象(基于pint或xarray实现),要将其转换为可复用的Numpy数组,只需提取其数值部分,以下是两种常用方法:
方法1:使用.values属性
直接通过.values获取底层的Numpy数组,这是最直接的实现方式:
import metpy.calc as mpcalc import numpy as np from metpy.units import units # 原代码缺少该导入,需补充 # 生成测试数据 np.random.seed(19990503) u = np.random.randint(0, 15, 10) * units('m/s') v = np.random.randint(0, 15, 10) * units('m/s') # 计算风向 direction = mpcalc.wind_direction(u, v) # 转换为Numpy数组 direction_np = direction.values # 验证结果 print(type(direction_np)) # 输出 <class 'numpy.ndarray'> print(direction_np)
方法2:使用.magnitude属性
如果是基于pint的Quantity对象,.magnitude同样可以提取纯数值并返回Numpy数组,效果与.values一致:
direction_np = direction.magnitude
注意事项
- 原代码遗漏了
from metpy.units import units的导入,运行时会触发报错,必须补充。 - 转换后的Numpy数组不再包含单位信息,若后续流程需要保留单位,建议同时保留原
direction对象,仅在需要纯数值场景下提取数组。
内容的提问来源于stack exchange,提问作者Tee
相关产品推荐
相关产品推荐

