从 xarray 数据集中的某些变量中删除维度

2024-01-29

我有一个 xarray 数据集,其中某些变量的维度超出了必要的维度(例如,“纬度”和“经度”变量也随时间变化的 3D 数据集)。如何删除多余的尺寸?

例如,在下面的数据集中,“bar”是沿x and y轴,沿轴具有恒定值x轴。我该如何删除x尺寸来自“bar”而不是“foo”?

>>> ds = xr.Dataset({'foo': (('x', 'y'), np.random.randn(2, 3))},
                    {'x': [1, 2], 'y': [1, 2, 3],
                     'bar': (('x', 'y'), [[4, 5, 6], [4, 5, 6]])})
>>> ds
<xarray.Dataset>
Dimensions:  (x: 2, y: 3)
Coordinates:
  * x        (x) int64 1 2
  * y        (y) int64 1 2 3
    bar      (x, y) int64 4 5 6 4 5 6
Data variables:
    foo      (x, y) float64 -0.9595 0.6704 -1.047 0.9948 0.8241 1.643

删除额外维度(使用索引)的最直接方法会导致出现稍微令人困惑的错误消息:

>>> ds['bar'] = ds['bar'].sel(x=1)
ValueError: dimension 'x' already exists as a scalar variable

问题是,当您在 xarray 中进行索引时,它会将索引坐标保留为标量坐标:

>>> ds['bar'].sel(x=1)
<xarray.DataArray 'bar' (y: 3)>
array([4, 5, 6])
Coordinates:
    x        int64 1
  * y        (y) int64 1 2 3
    bar      (y) int64 4 5 6

这通常很有用,但在这种情况下标量坐标'x'索引数组与非标量坐标(和维度)冲突'x'当您尝试在原始数据集上设置它时。因此 xarray 错误而不是覆盖变量。

为了解决这个问题,您需要删除标量'x'索引后。在当前版本的 xarray 中,您可以使用以下命令执行此操作drop:

>>> ds['bar'] = ds['bar'].sel(x=1).drop('x')
>>> ds
<xarray.Dataset>
Dimensions:  (x: 2, y: 3)
Coordinates:
  * x        (x) int64 1 2
  * y        (y) int64 1 2 3
    bar      (y) int64 4 5 6
Data variables:
    foo      (x, y) float64 -0.9595 0.6704 -1.047 0.9948 0.8241 1.643

在 xarray 的未来版本(v0.9 及更高版本)中,您将能够在索引时通过写入删除坐标drop=True, e.g., ds['bar'].sel(x=1, drop=True).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 xarray 数据集中的某些变量中删除维度 的相关文章

随机推荐

  • 将 java 系统属性传递给 ant 测试

    我让 ant 使用以下代码执行 jar
  • 轮播引导程序中的拉伸图像

    我正在使用 Bootstrap 4 那里有一个带有图片的轮播 图像一直显示拉伸 不知道出了什么问题 carousel margin bottom 4rem position relative carousel caption bottom
  • 在非常大的树上执行 DFS 的最佳方法是什么?

    情况是这样的 应用世界由数十万个状态组成 给定一个状态 我可以计算出一组 3 或 4 个其他可到达的状态 一个简单的递归可以构建一个状态树 它会变得非常大且非常快 我需要从根状态到该树中的特定深度执行 DFS 以搜索包含 最小 状态的子树
  • Dalvik 和 Android 工具链可以带来哪些优化?

    我正在开发一个高性能 Android 应用程序 一款游戏 虽然我首先尝试编写代码以提高可读性 但我喜欢在脑海中保留一幅幕后发生的事情的图片 通过 C 我对编译器能为我做什么和不能做什么有了相当好的直觉 我正在尝试为 Java Android
  • 使用 std::vector 调用 std::lock ()

    我想将以下代码替换为std lock for mutex m mutexes m gt lock 无论如何我可以调用std lock 在那些给定的互斥体上std vector
  • 如何在 ActiveSupport::TestCase 中存根方法

    In RSpec我可以像这样存根方法 allow company to receive foo 300 我怎样才能存根一个方法ActiveSupport TestCase 我有一个这样的测试 class CompanyTest lt Act
  • 对文件中所有奇数行求和的 Pythonic 方法

    我正在学习 Python 以便参加研究生院的编程分班测试 这实际上是我为了感受它而编写的第一个小脚本 我的背景主要是C 和PHP 但是我在测试中不能使用任何一种语言 我的测试脚本读取以下文本文件 test file1 txt 偶数行包含样本
  • 应该如何创建一个可能抛出异常的 akka actor?

    我正在将一个项目从 scala Actor 迁移到 Akka Actor 我曾经有过类似的情况 如果某个系统资源不可用 MyActor 的构造函数可能会抛出异常 var myActor MyActor null try myActor ne
  • 如何制作基本的 FullCalendar 自定义视图

    下面的代码来自 FullCalendar 的自定义视图 https fullcalendar io docs views Custom Views 文档 这似乎是一个很好的开始 但是对于像我这样的新手来说 拥有一些呈现最简单的自定义视图 带
  • 仅将最后一个 shell 命令的标准输出放入 Python 变量中[重复]

    这个问题在这里已经有答案了 prova sh 包含 bin bash echo Output that I don t want echo Output that I don t want echo Output that I don t
  • java.text.ParseException:使用 Clock.systemUTC() 时出现无法解析的日期错误[重复]

    这个问题在这里已经有答案了 我在解析日期时遇到解析错误 java text ParseException 无法解析的日期 2021 06 17T05 49 41 174Z 无法解析的日期 2021 06 17T05 49 41 174Z 我
  • 使用 dgtsv_ 或 sgtsv_ 求解 A*X = B 类型的方程

    我正在尝试求解 SWIFT 中的 A X B 类型的线性方程组 我已经能够使用基于 LU 分解的算法来做到这一点 该算法消耗 O N 2 内存 由于我的数组通常很大 10000 个样本或更多 因此我正在研究 LAPACK 它具有一些特定于三
  • 登录 OS X,验证 iOS 和 OSStatus -9809

    我正在使用苹果的安全框架 https developer apple com library mac documentation Security Reference SecurityFrameworkReference 我能够在 OS X
  • 如何让 bash 将 stderr 重定向到 >( 命令替换)?

    我可以很好地将标准输出重定向到命令重定向 echo stdout gt 2 echo stderr gt gt rev stderr tuodts 但是当我尝试将 stderr 重定向到另一个时 它似乎通过了 stdout 通道 echo
  • Git:如何使用多个存储库?

    我有一个远程只读 git 存储库A 我已将其克隆到本地文件系统中 A定期更新 每次更新后我都会将更新的代码拉取并合并到我的系统中 我想与我的团队成员就以下文件进行协作A 为此 我创建了一个新的远程存储库B 我如何管理同步B与我的本地存储库
  • 避免在终端/cmd 上运行 FFmpeg

    I m using FFmpeg for a small project so I built a GUI basic application for video editing here is the image 一切工作正常 但我只是想
  • 如何使用 WPF 将文本换行到标签中?

    我有一个TextBox和一个标签 单击按钮后 我执行以下代码 label1 Content textbox1 Text 我的问题是 如何启用标签的文本换行 一行上可能显示太多文本 如果是这种情况 我希望它自动换行为多行 The Label控
  • 如何将 CSRF 令牌从服务器传递到客户端?

    这听起来可能是一个愚蠢的问题 我想澄清这一点 如果首先将令牌发送给客户端并且客户端发回相同的令牌 csrf 令牌如何帮助识别跨站请求 恶意客户端不会得到服务器的响应吗 如果我们在发送令牌时检查来源 那么令牌检查的事情是不是显得多余 我们如何
  • ASP.NET MVC 如何在布局中使用 Partial View?

    我需要使用部分视图在布局中渲染菜单 如果有更好的方法 请告诉我 我这样做 在布局中 if User IsInRole Admin Html Partial AdminMenu 我在控制器中这样称呼它 public ActionResult
  • 从 xarray 数据集中的某些变量中删除维度

    我有一个 xarray 数据集 其中某些变量的维度超出了必要的维度 例如 纬度 和 经度 变量也随时间变化的 3D 数据集 如何删除多余的尺寸 例如 在下面的数据集中 bar 是沿x and y轴 沿轴具有恒定值x轴 我该如何删除x尺寸来自