问题标签 [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.

0 投票
1 回答
3227 浏览

python - 从 Xarray 中的 `xr.Dataset` 获取值(点、向量、数组等)?(Python 3)

我不知道如何从xr.Dataset对象中实际提取数据。我不知道如何访问单个值。如何像使用 DataArrays 一样从 Datasets 中提取值(点值、向量、数组等)?

0 投票
1 回答
873 浏览

python - 如何将色标标签移动到 matplotlib/xarray 中彩色字段的中间?

我有一个带有离散值(=类别/因子)的热图,创建如下:

热图

我想将色标/图例中的数字移动到相应字段的中间。我(和同事)发现他们在字段交叉点的位置有点误导,特别是考虑到热图中 x 轴上的刻度本身就在字段的中间。

如何将色阶上的这些值移动到字段的中间(并切断 10,这不是数据集中的值)?

0 投票
1 回答
1981 浏览

python - python xarray 按纬度/经度选择并将点数据提取到数据框

我想选择纬度/经度范围内的所有网格单元格,对于每个网格单元格,将其导出为日期框,然后导出到 csv 文件(即df.to_csv)。我的数据集如下。我可以xr.where(...)用来屏蔽输入之外的网格单元,但不确定如何循环遍历未屏蔽的剩余网格。或者,我尝试使用这些xr.sel函数,但它们似乎不接受像ds.sel(gridlat_0>45). xr.sel_points(...)也可以工作,但我无法弄清楚在我的情况下使用的索引器的正确语法。提前谢谢你的帮助。

0 投票
1 回答
422 浏览

python - 将 xarray 数据集写入 netcdf 或数据帧的分段错误

使用从多个 grib2 文件创建的 xarray 数据集时出现分段错误。写入 netcdf 以及写入数据帧时会发生故障。任何关于出了什么问题的建议表示赞赏。

文件示例(来自http://dd.weather.gc.ca/model_hrdps/west/grib2/00/000/)'CMC_hrdps_west_RH_TGL_2_ps2.5km_2016072800_P015-00.grib2',...'CMC_hrdps_west_TMP_TGL_2_ps2.5km_2016072800_P011.grib2 '

写出 netcdf

分段错误(核心转储)

0 投票
1 回答
804 浏览

python-2.7 - 使用 Basemap 在两个 xarray 数据集之间进行插值

我有两个不同的 xarray 数据集,它们具有不同的纬度/经度网格分辨率。我想将分辨率较低的一个 xarray 重新网格化为与分辨率较高的一个 xarray 相同的分辨率。我找到了一些示例(例如,http ://earthpy.org/interpolation_between_grids_with_basemap.html ),但它对我不起作用。这是我为测试而制作的一个示例:

我收到以下错误:

ValueError: xout 和 yout 必须具有相同的形状!

截屏: 看截图

basemap.interp() 是否要求 xout 和 yout 形状相同?那么 var2 需要是正方形吗?我的任何数据集几乎都不是这种情况!如何将 var1 重新设置为与 var2 相同的分辨率?

注意:重新网格化后,我想在给定与 var2 相关的一些条件下对 var1 进行子采样。例如:

所以我想在插值过程中尽量减少网格点的任何损失。

0 投票
3 回答
13678 浏览

python - Python Xarray 将 DataArray 添加到数据集

很简单的问题,但我在网上找不到答案。我有一个Dataset,我只想为其添加一个名称DataArray。类似的东西dataset.add({"new_array": new_data_array})。我知道mergeand updateconcatenate但我的理解是merge用于合并两个或多个Datasets 并且concatenate用于连接两个或多个DataArrays 以形成另一个DataArray,我还没有完全理解update。我已经尝试过dataset.update({"new_array": new_data_array}),但出现以下错误。

我也试过dataset["new_array"] = new_data_array了,我得到了同样的错误。

更新

我现在发现问题是我的一些坐标有重复的值,这是我不知道的。坐标用作索引,因此 Xarray 在尝试组合共享坐标时会感到困惑(可以理解)。下面是一个有效的例子。

输出:

上面的代码names用作索引。如果我稍微更改一下代码,这样就会names有一个重复的,比如说names = ["joaquin", "manolo", "joaquin"],然后我会得到一个InvalidIndexError.

代码:

输出:

所以这不是 Xarray 中的错误。尽管如此,我还是浪费了很多时间试图找到这个错误,我希望错误消息能提供更多信息。我希望 Xarray 的合作者能尽快解决这个问题。(在尝试合并之前对坐标进行唯一性检查。)

无论如何,我在下面的答案提供的方法仍然有效。

0 投票
0 回答
96 浏览

python - `xarray.Dataset.groupby()` 可能存在错误?

我在 Mac OS X El Capitan 10.11.6 上使用 Xarray 版本 0.8.0、Python 3.5.1。

以下代码按预期工作。

输出:

但是,如果我只改变一点点,使所有元素id_data_array都不同,那么就会出现错误。

代码:

输出:

对我来说,这似乎是错误的,因为如果这是所需的行为,那将非常奇怪。当然,我们应该包括DataArray我们分组依据的所有元素都不同的情况?

更新

我现在已经卸载并重新安装了 Xarray。新的 Xarray 是 0.8.1 版,它似乎工作正常。所以它可能确实是 Xarray 0.8.0 中的一个错误。

0 投票
1 回答
4843 浏览

python-xarray - Python Xarray`Dataset.sel()`沿一维选择多个值

假设我有一个datasettype xarray.Dataset。我有一个名为 , 的维度(由s 中的所有 sname共享,但我认为这对这个问题并不重要,)并且我想选择一个具有特定名称的条目。我会这样做如下。DataArrayDataset

但是假设我现在想选择一个包含名称“lucifer”“judas”的子数据集。我想做类似的事情:

因为这是我能想象到的最接近 Pandas 的语法。但这给了我一个错误。

(顺便说一句,我从 Xarray 得到的每一个错误似乎都是这个确切的错误,我很高兴看到 Xarray 提供更多信息错误。)所以我的问题是,如何从一个命名维度中选择多个命名值?假设命名值没有特定的顺序,所以我不能使用切片。

0 投票
2 回答
5319 浏览

python - 在 xarray 中过滤数据的简洁方法

我需要对 xarray 数组中的值应用一个非常简单的“匹配语句”:

  1. 如果值 > 0,则取 2
  2. 如果值 == 0,则设为 0
  3. 值在哪里NaN,使NaN

这是我目前的解决方案。我使用NaNs, .fillna, & 类型强制来代替 2d 索引。

这改变了这一点:

...对此:

在熊猫中df[df>0] = 2就足够了。当然,我正在做一些行人的事情,并且有更简洁的方法吗?

0 投票
1 回答
3013 浏览

python - 沿现有轴合并/合并 xr.DataArray (Xarray | Python 3)

这是一个玩具示例,但我有 2 个数据框;(1) 行=样本,列=属性;(2) 行=样本,列=元数据字段。

我想concatmerge创建 3 维xr.DataArray. 我已经多次这样做了,但我无法弄清楚为什么它在这种情况下不起作用?我想concat沿着patient_id轴有一个 3D xr.DataArray

为什么不xr.concat构建3维DataArray?我认为我错误地使用了该dim参数,因为它应该concat沿着新轴但是有没有办法沿着现有轴做到这一点?

我正在尝试使用Create DataArray from Dict of 2D DataFrames/Arrays 中的方法,但它不起作用。我开始merge工作了,但它把它放入了一个DataSetw/2 数据变量中