问题标签 [python-xarray]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 将 numpy.polyfit 应用于 xarray 数据集
Xarray 是否支持诸如 polyfit 之类的 numpy 计算函数?或者有没有一种有效的方法将这些函数应用于数据集?
示例:我想计算适合两个变量(温度和高度)的线的斜率,以计算失效率。我有一个包含这两个变量的数据集(如下),维度为(垂直、时间、xgrid_0、ygrid_0)。
如果我提取给定时间的温度和高度,xgrid_0,ygrid_0; 我可以使用 numpy.polyfit 函数。
但这是一种缓慢且低效的方法。关于解决此问题的更好方法的任何建议?
python-xarray - groupby.apply 方法采用多个参数
在xarray
文档中,该groupby.apply
方法可以将某些功能应用于不同的组。如文档中所述,
但是,如何将另一个参数放入标准化函数中?IE
显然不对。现在,没有办法调用 apply 方法。
python - python xarray索引/切片非常慢
我目前正在处理一些海洋模型输出。在每个时间步,它有 42*1800*3600 个网格点。
我发现我的程序中的瓶颈是切片,并调用 xarray_built in 方法来提取值。更有趣的是,相同的语法有时需要完全不同的时间。
以这个为例,读取 VVEL 和 UVEL 大约需要 4 秒,而读取 TEMP 只需要大约 6 毫秒。如果没有切片,VVEL 和 UVEL 需要大约 1 秒,而 TEMP 需要 120 纳秒。
我一直认为,当我只输入完整数组的一部分时,我需要更少的内存,因此需要更少的时间。事实证明,XARRAY 加载到整个数组中,任何额外的切片都需要更多时间。但是,有人可以解释为什么从同一个 netcdf 文件中读取不同的变量需要不同的时间吗?
该程序旨在提取逐步截面,并计算截面热传输,因此我需要选择 UVEL 或 VVEL,乘以沿截面的 TEMP。所以,看起来,在 TEMP 中快速加载是件好事,不是吗?
不幸的是,事实并非如此。当我沿着规定的部分循环大约 250 个网格点时......
特别是这一行:
它需要约 3.65 秒,但现在必须重复约 250 次。如果我删除.values
,那么这个时间减少到〜4ms。但我需要计时tt
to vt
,所以我必须提取值。奇怪的是,类似的表达式vv=np.squeeze(vvel[:,yidx,xidx].values)
需要的时间要少得多,大约只有 1.3 毫秒。
总结我的问题:
- 为什么从同一个 netcdf 文件加载不同的变量需要不同的时间?
- 有没有更有效的方法来挑选多维数组中的单列?(不需要 xarray 结构,也不需要 numpy.ndarray)
- 为什么从 Xarray 结构中提取值需要不同的时间,对于完全相同的语法?
谢谢!
python - xarray.Dataset.where() 方法将 DataArrays 的 dtype 强制更改为浮动
问题描述
我有一个包含int
s 的数据集,我想根据一些标准选择一个子数据集,但我想保留整数数据类型。在我看来,Xarray 强制将整数数据更改为浮点数据类型。
示例设置
代码
输出
示例问题
代码
输出
python - 仅使用冬季数据将 xarray 数据集重新采样为年频率
我有一个数据集,其中包含几年的每日 x,y 网格气象数据。我只对计算冬季数据的年度平均值感兴趣,即。也不包括夏季数据。
我认为我需要使用该resample
命令,例如,AS-OCT
将时间序列重新采样为年度频率,冬季从每年 10 月开始(它是北纬地区)。
我无法解决的是如何指定我只想使用从 10 月到 4 月/5 月的数据,而忽略 6 月、7 月和 8 月。
由于 resample 函数适用于ndarray
对象,我想出了一个相当不便携的方法来做这个总和:
但我觉得应该有一个更优雅的解决方案。有任何想法吗?
python - 在 python xarray netcdf4 中创建输出变量和复制属性
我可以像这样在 netcdf4 中创建变量并复制属性:
xarray 对应的版本是什么?
python - 使用 xarray open_mfdataset 函数时出错
我正在尝试组合多个具有相同尺寸的 netCDF 文件,它们的尺寸如下:
但是,在使用 open_mfdataset 时,我收到此错误:
如何修复此错误?我的尺寸在所有文件中都相同
python - 向 xarray DataArray 添加维度
我需要向 a 添加一个维度DataArray
,填充新维度中的值。这是原始数组。
我想我可以用新维度创建一个空的 DataArray 并复制现有数据。
一个更好的主意可能是使用concat
. 我花了一段时间才弄清楚如何为 concat 维度指定暗淡和坐标,但这些选项似乎都不是很好。有什么我遗漏的东西可以使这个版本更干净吗?
不过,还有比上述两个选项更好的方法吗?
python - xarray 中的布尔索引
我有一些带有暗淡的数组,'time', 'lat', 'lon'
有些只有'lat', 'lon'
. 我经常必须这样做才能使用 2d(经纬度)掩码来掩码与时间相关的数据:
当然,计算按预期广播。如果y
是 2d lat-lon 数据,则其值将广播到 x 中的所有时间坐标:
但是索引并没有像我期望的那样广播。我希望能够做到这一点,但它会引发ValueError: Buffer has wrong number of dimensions:
最后,似乎xr.where
确实可以按预期跨时间坐标广播掩码的值,但是您不能以这种方式设置值。
那么,我在这里是否缺少一些有助于使用缺少尺寸(并且需要广播)的布尔掩码设置值的东西?我在顶部提供的选项真的是做到这一点的方法吗(在这种情况下,我不妨只使用标准的 numpy 数组......)
python - xarray 广播如何与 numpy 函数一起使用?
我正在尝试使用我的 xarray 坐标进行坐标转换,所以
我有一个像这样的 DataArray:
并且正在执行以下操作:
我得到以下形状:
我想看看(10, 10, 1)
我为所有人得到的 r 形状。
看起来 xarray 的花哨广播只适用于基本的算术运算,而 numpy 函数正在天真地广播。
它是否正确?
有没有经过批准的方法来解决这个问题?我可以编写我自己的 xarray 感知 arctan2 函数来获得正确的广播,但我希望我不必这样做。