直接应用 numpy 梯度结果与使用 xarray.apply_ufunc 应用的结果之间的差异

2024-02-08

我正在尝试使用 xarray 的apply_ufunc包装 numpy 的gradient函数,以便沿一维获取梯度。然而,apply_ufunc返回一个与使用的数组形状不同的数组np.gradient直接返回:

import xarray as xr
import numpy as np

def wrapped_gradient(da, coord):
    """Finds the gradient along a given dimension of a dataarray."""

    dims_of_coord = da.coords[coord].dims
    if len(dims_of_coord) == 1:
        dim = dims_of_coord[0]
    else:
        raise ValueError('Coordinate ' + coord + ' has multiple dimensions: ' + str(dims_of_coord))

    coord_vals = da.coords[coord].values

    return xr.apply_ufunc(np.gradient, da, coord_vals, kwargs={'axis': -1},
                          input_core_dims=[[dim]], output_core_dims=[[dim]],
                          output_dtypes=[da.dtype])



# Test it out by comparing with applying np.gradient directly:
orig = xr.DataArray(np.random.randn(4, 3), coords={'x': [5, 7, 9, 11]}, dims=('x', 'y'))

expected = np.gradient(orig.values, np.array([5, 7, 9, 11]), axis=0)

actual = wrapped_gradient(orig, 'x').values

我希望预期和实际是相同的,但相反它们是不同的:

print(expected.shape)
> (4,3)
print(actual.shape)
> (3,4)

(expected and actual也不只是彼此的转置版本。)我很困惑为什么 - 我的理解apply_ufunc是核心尺寸移到最后,这样axis=-1应该总是提供给ufunc?


xr.apply_ufunc移动input_core_dims到最后一个位置。 计算梯度的维度被移动到最后一个位置,因此得到的形状将与结果进行转置np.gradient.

问题是在您的脚本中没有考虑坐标apply_ufunc。 我认为你需要通过input_core_dims 代表所有输入;在你的情况下,那些da and coord_vals。 改变[[dim]] to [[dim], []]将正确计算,即

return xr.apply_ufunc(np.gradient, da, coord_vals, kwargs={'axis': -1},
                      input_core_dims=[[dim], []], output_core_dims=[[dim]],
                      output_dtypes=[da.dtype])

顺便说一句,我认为当 input_core_dims 与输入的预期不匹配时,xarray 应该引发错误。 我会在 Github 上提出问题。

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

直接应用 numpy 梯度结果与使用 xarray.apply_ufunc 应用的结果之间的差异 的相关文章

  • 如何将人物传奇带到前台?

    我有一系列子图 其中每个子图都有一个图例 我想在每个子图之外与相邻子图重叠 问题在于图例位于其自己的图的 顶部 但位于相邻图的下方 Legend 不将 zorder 作为参数 所以我不知道如何解决这个问题 这是我使用过的代码 import
  • 将文件标记为从 Python 中删除?

    在我的一个脚本中 我需要删除当时可能正在使用的文件 我知道我无法删除正在使用的文件 直到它不再使用为止 但我也知道我可以将该文件标记为由操作系统 Windows XP 删除 我将如何在 Python 中做到这一点 以及另一个不依赖于 pyw
  • 将数字转换为整数列表[重复]

    这个问题在这里已经有答案了 我该如何写magic下面的函数 gt gt gt num 123 gt gt gt lst magic num gt gt gt gt gt gt print lst type lst 1 2 3
  • 使用 Matplotlib 的范围绘制图像的 3D 轮廓

    正如我所介绍的here https stackoverflow com questions 18792624 fits image input to a range in plot python 在二维中 我想知道如何 缩放 要绘制到绘图中
  • 使用pip安装pylibmc时出错

    您好 当我尝试使用 pip 在 OSX Lion 上安装 pylibmc 时 出现以下错误 pylibmcmodule h 42 10 fatal error libmemcached memcached h file not found
  • 如何将嵌套的Python字典转换为简单的命名空间?

    假设我有一个深度为 N 的嵌套字典 如何将每个内部嵌套字典转换为简单的命名空间 example input key0a test key0b key1a key2a keyNx key2b test key1b test example o
  • python - 将cookie添加到cookiejar

    如何在 python 中创建 cookie 并将其添加到 CookieJar 实例 我拥有 cookie 的所有信息 名称 值 域 路径等 但我不想通过 http 请求提取新的 cookie 我尝试了这个 但看起来 SimpleCookie
  • 如何从 Python 3.5 降级到 3.4

    我想安装 kivy 链接在这里 https kivy org docs installation installation windows html install win dist 用于项目 但是 当尝试使用 pip 安装它所依赖的包时
  • 从网站上抓取数字和详细信息的数据

    我想从网站上抓取联系电话以及快递服务的相应详细信息 我无法从所有快递服务中获取联系电话和其他详细信息 例如姓名地址和评级 我分析的数据位于脚本标签中 请提出修复此问题的建议 import requests import pandas as
  • 自适应支付 API 错误 580001

    我正在 python 中向 paypal 自适应支付 API 发出 PAY 请求 并收到通用错误 id 580001 没有其他信息 headers API credentials for the API caller business ac
  • 模拟类:Mock() 还是 patch()?

    我在用mock http www voidspace org uk python mock index html使用Python 想知道这两种方法中哪一种更好 阅读 更Pythonic 方法一 只需创建一个模拟对象并使用它 代码如下 def
  • Tkinter 如何根据此组合框自动更新第二个组合框

    我在 Tkinter Python 中遇到了组合框更新的问题 我有两个组合框 组合框A with values A B C and 组合框B 我想要的是 当值A在组合框中选择A然后在组合框中B显示值 1 2 3 当值B在组合框中选择A然后在
  • 如何使用 selenium 获取 javascript 结果?

    我有以下代码 from selenium import selenium selenium selenium localhost 4444 chrome http some site com selenium start sel selen
  • 如何连接多个字符串? [复制]

    这个问题在这里已经有答案了 如何将 stringList 中的所有字符串合并为一个而不打印它 例如 s joinStrings very hot day returns string print s Veryhotday 感觉有点倒退 但是
  • 如何使用资源模块来衡量函数的运行时间?

    我想使用Python代码测量函数的CPU运行时间和挂钟运行时间 此处建议资源模块 如何以 Python 代码 不是从终端 的形式分别测量函数的 CPU 运行时间和挂钟运行时间 https stackoverflow com q 192046
  • 对 Python 列表元素进行分组

    我有一个 python 列表 如下所示 my list 25 1 0 65 25 3 0 63 25 2 0 62 50 3 0 65 50 2 0 63 50 1 0 62 我想根据以下规则对它们进行排序 1 gt 0 65 0 62 l
  • 在 Python 中伪造一个对象是否是类的实例

    假设我有一堂课FakePerson它模仿基类的所有属性和功能RealPerson 不扩展它 在Python 3中 是否可以伪造isinstance 为了认识到FakePerson as a RealPerson只通过修改对象FakePers
  • 重新安装后使用 pandas dataframes 时出现问题

    我已经重新安装了 Python 和 Anaconda 现在面临以下问题 在我将 pkl 文件加载到数据帧并尝试 查看 该文件后 如下所示 df pd read pickle example pkl df 我收到错误 AttributeErr
  • 真实值与预测值的降维可视化

    我有一个数据框 如下所示 label predicted F1 F2 F3 F40 major minor 2 1 4 major major 1 0 10 minor patch 4 3 23 major patch 2 1 11 min
  • IOError:在 Linux 上的 ReportLab 中使用 matplotlib PNG 时“解码器 zip 不可用”,适用于 Windows

    我正在使用 ReportLab 打印 matplotlib 生成的图表 我可以在我的 Windows 开发机器上毫无问题地执行此操作 然而 当我部署到 Ubuntu 服务器时 渲染失败并出现所述错误 我假设我缺少一个 Python 模块 但

随机推荐

  • jQuery 延迟和承诺 - .then() 与 .done()

    我一直在阅读有关 jQuery deferreds 和 Promise 的内容 但我看不出使用之间的区别 then done 成功回调 我知道埃里克 海因兹 http www erichynds com jquery using defer
  • java.lang.NoSuchFieldError:android.support.v7.appcompat

    我将我的支持库从 r20 更新到了 r21 现在当我运行我的应用程序时 我收到此错误super onCreate我的主要活动 java lang NoSuchFieldError android support v7 appcompat R
  • iOS:将视图转换为圆柱形

    借助 Quartz 2D 我们可以改变对事物的看法x yand z axis 在某些情况下 我们甚至可以通过更改矩阵的值使它们看起来像 3D 我想知道是否可以将视图转换为圆柱体形状 如下图所示 请忽略气缸的顶部 我更好奇是否有可能扭曲UIV
  • Inno Setup:如何处理[UninstallDelete]部分的进度条?

    我使用 Inno Setup 为我的应用程序制作安装程序 当用户卸载应用程序时 我想删除其中的自定义文件夹Program Data文件夹 我的文件夹很大 大约15 GB 所以我使用 UninstallDelete 删除此文件夹的部分 Uni
  • 用于搜索引擎风格搜索的 JavaScript 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一个 JavaScript 库可以确定字符串是否与搜索查询匹配 它应该高效并提供高级查询功能 如
  • 在 JSDoc 中记录开放式参数函数的正确方法

    假设您有如下内容 var someFunc function do something here with arguments 您如何正确记录该函数可以在 JSDoc 中接受任意数量的参数 这是我最好的猜测 但我不确定它是否正确 param
  • 当overflow-x:hidden存在时,overflow-y:visible不起作用[重复]

    这个问题在这里已经有答案了 在 Chrome 或 Firefox 中无法正常工作 有什么解决方法吗 h3 overflow y visible h3 with overflow x hidden div style width 100px
  • 在 PDO 准备好的语句中将值传递给 MySQL IN 操作?

    我有一个表单字段 它返回一个逗号分隔的字符串 我想将其传递给 PHP PDO MySQL 查询 IN 操作 但 IN 操作要求值以逗号分隔 而不是我的string的分隔值 我该怎么做呢 values POST values 10 5 4 3
  • 加特林 websocket 场景中的状态检查

    我有一个加特林场景 我订阅了一个 websocket 并想要检查传入消息的内部一致性 例如 通过 websocket 发送的消息是
  • Joomla 介绍图片作为阅读更多链接

    我想让 joomla 文章介绍图像的行为类似于阅读更多内容和标题链接 因此 用户单击图像 然后加载文章 我不是 PHP 专家 但也许这是阅读更多链接代码 a href class a
  • Google 地图显示“仅用于开发目的”

    当我尝试在网页中显示它时 Google 地图显示消息 仅用于开发目的 我怎样才能让这条消息消失呢 我的代码是这样的
  • 当所有测试在测试项目中运行时管理 Application.Current

    问题介绍 该网站上有几个关于应用 当前当测试的方法 函数包含 Dispatcher 使用时 为 null 问题 第一次我只使用了一个简单的解决方案 我刚刚创建了一个 getter 属性来创建一个new Application 以防止 应用
  • 在 C# 中创建列表的列表

    我似乎在理解 C 中通用列表的通用列表的想法时遇到了一些麻烦 我认为问题源于使用
  • 在 Java 中将 Element(org.w3c.dom) 转换为字符串

    我在将 Element 对象转换为 String 时遇到一个小问题 因为我需要将一个字符串传递给特定的方法 我尝试过使用 toString 或使用分配给它的字符串变量 没有一项试验是正确的 我们怎样才能轻松地进行转换 并且字符串对象还应该显
  • 阻止特定 DIV 的 UI Jquery 插件

    任何人都知道 BlockUI 的 JQuery 插件 它允许阻止特定的 DIV 而不仅仅是整个页面 谢谢 你可以通过blockui http jquery malsup com block element plugin
  • 像素完美的 Android 碰撞检测

    好的 我正在 Android 上开发一款游戏 我需要实现像素完美的碰撞检测 我已经在每个图像周围设置了边界框 每个边界框都经过变换以匹配图像的当前旋转 这一切都很好 我还将每个位图的像素数据存储在数组中 有人可以帮我找出检测像素是否重叠的最
  • 让 CC-Tray 工作

    我正在尝试让 cc tray 工作 而不是使用网络仪表板 我不确定如何获得运行 Cruisecontrol 的服务器的正确 URL 并且在网上找不到任何有用的文档 有人可以帮忙吗 Thanks 我遇到了同样的问题 并解决了在添加服务器 ht
  • “未在此范围内声明”错误

    所以我正在编写这个简单的程序来使用发现的高斯算法来计算任何日期的日期here http en wikipedia org wiki Determination of the day of the week Gaussian algorith
  • Redis 对二级索引的支持

    redis是否支持字符串数据类型的二级索引 我已经安装了 redis 服务器来检查这一点 但无法清楚地找到执行此操作的方法 我想知道如何将数据与辅助密钥一起存储在 Redis 中 例如 假设我想存储车辆 ID 注册号 在我的情况下 这将是主
  • 直接应用 numpy 梯度结果与使用 xarray.apply_ufunc 应用的结果之间的差异

    我正在尝试使用 xarray 的apply ufunc包装 numpy 的gradient函数 以便沿一维获取梯度 然而 apply ufunc返回一个与使用的数组形状不同的数组np gradient直接返回 import xarray a