【问题标题】:boolean indexing in xarrayxarray 中的布尔索引
【发布时间】:2017-01-31 10:24:18
【问题描述】:

我有一些带有暗淡 'time', 'lat', 'lon' 的数组和一些只有 'lat', 'lon' 的数组。我经常必须这样做才能使用 2d(经纬度)掩码来屏蔽与时间相关的数据:

x.data[:, mask.data] = np.nan

当然,计算按预期广播。如果y 是 2d lat-lon 数据,它的值会广播到 x 中的所有时间坐标:

z = x + y

但索引并没有像我预期的那样广播。我希望能够做到这一点,但它会引发 ValueError: Buffer has wrong number of dimensions:

x[mask] = np.nan

最后,xr.where 似乎按预期跨时间坐标广播掩码的值,但您不能以这种方式设置值。

x_masked = x.where(mask)

那么,我在这里是否缺少一些有助于使用缺少尺寸(并且需要广播)的布尔掩码设置值的东西?我在顶部提供的选项真的是这样做的方法吗(在这种情况下,我还不如只使用标准的 numpy 数组......)

【问题讨论】:

  • 您能在问题中添加一些示例数据吗?这将使理解需求变得更加容易,并为回答者提供一些数据。

标签: python numpy python-xarray


【解决方案1】:

编辑:这个问题仍在获得支持,但现在要容易得多 - 请参阅this answer


这里有点相关的问题:Concise way to filter data in xarray

目前最好的方法是.where.fillna 的组合。

valid = date_by_items.notnull()
positive = date_by_items > 0
positive = positive * 2
result = positive.fillna(0.).where(valid)
result

但是 xarray 中的变化将使这更加简洁 - 如果您有兴趣,请查看 GitHub 存储库

【讨论】:

  • 感谢您的确认,很高兴听到正在积极更新!
  • 这些更改是否存在于 xarray 0.8.2 中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多