如何从 xarray 数据集中选择特定数据变量

2024-04-15

背景

我正在尝试通过 xarray 和 OPeNDAP 下载 GFS 天气数据 netcdf4 文件。非常感谢涡度0123 https://stackoverflow.com/questions/52406826/load-selection-gfs-ensemble-opendap-data-into-memory-python对于他们之前的帖子,这使我能够对 python 脚本的骨架进行排序(如下所示)。

PROBLEM

事实是,GFS 数据集有 195 个数据变量,但我不需要大多数,我只需要其中的 10 个。

  • ugrd100m、vgrd100m、dswrfsfc、tcdcclm、tcddcblcll、tcdclcll、tcdcmcll、 tcdchcll、tmp2m、gustsfc

请求帮助

我已经浏览了 xarray readthedocs 页面和其他地方,但我无法找到一种方法将我的数据集缩小到仅十个数据变量。有谁知道如何缩小数据集中的变量列表?

Python脚本

import numpy as np
import xarray as xr

# File Details
dt = '20201124'
res = 25
step = '1hr'
run = '{:02}'.format(18)

# URL
URL = f'http://nomads.ncep.noaa.gov:80/dods/gfs_0p{res}_{step}/gfs{dt}/gfs_0p{res}_{step}_{run}z'

# Load data
dataset = xr.open_dataset(URL)
time = dataset.variables['time']
lat = dataset.variables['lat'][:]
lon = dataset.variables['lon'][:]
lev = dataset.variables['lev'][:]

# Narrow Down Selection
time_toplot = time
lat_toplot = np.arange(-43, -17, 0.5)
lon_toplot = np.arange(135, 152, 0.5)
lev_toplot = np.array([1000])

# Select required data via xarray
dataset = dataset.sel(time=time_toplot, lon=lon_toplot, lat=lat_toplot)
print(dataset)

您可以使用 xarray 的类似字典的语法。

variables = [
    'ugrd100m',
    'vgrd100m',
    'dswrfsfc',
    'tcdcclm',
    'tcdcblcll',
    'tcdclcll',
    'tcdcmcll',
    'tcdchcll',
    'tmp2m',
    'gustsfc'
]


dataset[variables]

给你:

<xarray.Dataset>
Dimensions:    (lat: 721, lon: 1440, time: 121)
Coordinates:
  * time       (time) datetime64[ns] 2020-11-24T18:00:00 ... 2020-11-29T18:00:00
  * lat        (lat) float64 -90.0 -89.75 -89.5 -89.25 ... 89.25 89.5 89.75 90.0
  * lon        (lon) float64 0.0 0.25 0.5 0.75 1.0 ... 359.0 359.2 359.5 359.8
Data variables:
    ugrd100m   (time, lat, lon) float32 ...
    vgrd100m   (time, lat, lon) float32 ...
    dswrfsfc   (time, lat, lon) float32 ...
    tcdcclm    (time, lat, lon) float32 ...
    tcdcblcll  (time, lat, lon) float32 ...
    tcdclcll   (time, lat, lon) float32 ...
    tcdcmcll   (time, lat, lon) float32 ...
    tcdchcll   (time, lat, lon) float32 ...
    tmp2m      (time, lat, lon) float32 ...
    gustsfc    (time, lat, lon) float32 ...
Attributes:
    title:        GFS 0.25 deg starting from 18Z24nov2020, downloaded Nov 24 ...
    Conventions:  COARDS\nGrADS
    dataType:     Grid
    history:      Sat Nov 28 05:52:44 GMT 2020 : imported by GrADS Data Serve...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 xarray 数据集中选择特定数据变量 的相关文章

随机推荐

  • 如何在iPhone上读取RGB像素数据

    我想知道如何在iPhone上扫描图像并分析每个像素的RGB值 从而最终确定整个图像的平均RGB 如果有人能将我推向正确的方向 我将不胜感激 我是图像分析新手 不确定从哪里开始 或者 iOS 5 API 中是否包含类似的内容 只需粘贴它 我正
  • 检查 DataGridView 上的所有复选框项目

    这是场景 I have checkbox 名称 检查全部 ID chkItems 和datagridview 当我单击此复选框时 上的所有复选框datagridview也会被检查 我还在网格上添加了复选框列 DataGridViewChec
  • 需要了解Android中的uses-feature

    uses feature按以下方式使用
  • 可以将此处结果上的匹配替换为map_err和“?”

    我有一些代码看起来像这样 大大简化的版本 一个函数接受两个类型的函数参数LoadClient and CheckApproval并返回错误或字符串 pub struct Client pub id String pub enum MyErr
  • Json.NET 可以对流进行序列化/反序列化吗?

    我听说 Json NET 比 DataContractJsonSerializer 更快 并且想尝试一下 但我在 JsonConvert 上找不到任何采用流而不是字符串的方法 例如 为了在 WinPhone 上反序列化包含 JSON 的文件
  • Google 脚本检查一张纸上一列中的数据是否与另一张纸上另一列中的数据相同

    我正在尝试创建一个 Google 脚本来检查一张纸上一列中的数据是否与另一张纸上另一列中的数据相同 您知道我哪里出错了吗 谢谢 代码如下 function myFunction data from Salesworks var sheet
  • CSS 中的逗号,使用相同 CSS 的多个选择器

    Resource table Tbl td some css Resource table Tbl td num some css 2 Resource table Tbl td num span icon some css 3 Resou
  • x >= 0 比 x > -1 更有效吗?

    在 C 中与 int 进行比较是x gt 0比更有效率x gt 1 简短的回答 不 更长的答案提供一些教育见解 这完全取决于您的编译器 尽管我打赌每个理智的编译器都会为这两个表达式创建相同的代码 示例代码 int func ge0 int
  • 如何查找USB盘符?

    我正在编写一个安装程序来将应用程序安装到 USB 驱动器 该应用程序只能从 USB 驱动器使用 因此它可以通过自动选择要安装的 USB 驱动器来为用户节省额外的步骤 我可能会尝试使用 Nullsoft 或 MSI 进行安装 但由于我最熟悉
  • 列出目录和子目录中的所有 xml 文件

    我想列出目录及其子目录中的所有 xml 文件 我尝试了 ls LR 但无法过滤除 xml 之外的其他文件 我想要类似 ls LR 的东西grep xml Thanks 您可以使用find命令 find type f name xml
  • Microsoft Graph API 更新其他用户的照片?

    使用 Microsoft Graph API 我能够获取 Azure Active Directory 租户中所有用户的列表 并确定他们是否有个人资料图片 然后 我想获取没有照片的用户列表并为他们上传一张 但 API 返回 403 错误 即
  • MVC5 通过流畅验证比较两个可为空的日期

    如何在流畅的验证中编写规则来检查两个可为空的日期 因为开始日期需要早于结束日期 我正在思考 RuleFor c gt c StartDate NotEmpty 如果开始日期不为空且结束日期不为空则进行比较 像这样的东西 RuleFor ac
  • HTML 中的 JavaScript 和 SVG [重复]

    这个问题在这里已经有答案了 我有 JavaScript 文件 我有 SVG 文件 我还有 HTML 文件 img src svgfile svg type 有人知道如何在 JavaScript 中调用 SVG 元素吗 以圆圈为例 如果您想使
  • 约束接口中的函数参数

    在接受函数的接口中约束函数参数的语法是什么 我试过 interface Num a gt Color f a gt Type where defs 但它说Name a is not bound in interface Your inter
  • 如何在不删除数据库文件的情况下完全清除SQLite3数据库?

    出于单元测试的目的 我需要完全重置 清除 SQLite3 数据库 运行测试套件时 所有数据库都是在内存中创建的 而不是在文件系统上创建的 因此我无法删除任何文件 此外 一个类的多个实例将同时引用数据库 因此我不能只在内存中创建一个新数据库并
  • 如何在 C# 中构建具有未指定参数数量的方法

    这是我的代码 private static string AddURISlash string remotePath if remotePath LastIndexOf remotePath Length 1 remotePath retu
  • 将前四个列表项移至列表末尾

    所以我有一个包含几个的列表 li 元素 ul li a li li b li li c li li d li li e li li f li li g li li h li ul 上下文是我想重用liiOS 的 1 000 个内存密集型列表
  • 从 java.sql.ResultSet 检索列名

    With java sql ResultSet有没有办法获取列的名称String通过使用列的索引 我查看了 API 文档 但找不到任何内容 您可以从以下位置获取此信息ResultSet元数据 看结果集元数据 https docs oracl
  • 是否有记录的方法来设置 iPhone 方向?

    我有一个应用程序 我想在某些视图中支持设备旋转 但其他视图在横向模式下特别有意义 因此当我交换视图时 我想强制将旋转设置为纵向 UIDevice 上有一个未记录的属性设置器可以实现这一点 但显然会生成编译器警告 并且可能会随着 SDK 的未
  • 如何从 xarray 数据集中选择特定数据变量

    背景 我正在尝试通过 xarray 和 OPeNDAP 下载 GFS 天气数据 netcdf4 文件 非常感谢涡度0123 https stackoverflow com questions 52406826 load selection