Python XArray索引返回

问题描述

我有一个多维xarray,例如:

testarray = xr.DataArray([[1,-2,3],[4,5,-6]])

,我想获取特定条件的索引,例如。其中testarray小于0。 因此,预期结果应为类似以下的数组:

结果= [[1,2],[0,1]]

或任何其他让我获得这些索引以进行进一步计算的格式。无法想象,xarray中没有针对此类基本问题的选项,但我找不到它。像

testarray.where(testarray<0)

做一些非常可疑的动作东西。数组的用法是一样的,但条件不满足的情况下是nan的?

非常感谢您的帮助:)

解决方法

要获取索引,可以使用np.argwhere

In [3]: da= xr.DataArray([[1,-2,3],[4,5,-6]])

In [4]: da
Out[4]:
<xarray.DataArray (dim_0: 2,dim_1: 3)>
array([[ 1,[ 4,-6]])
Dimensions without coordinates: dim_0,dim_1


In [14]: da.where(da<0,0)
Out[14]:
<xarray.DataArray (dim_0: 2,dim_1: 3)>
array([[ 0,0],[ 0,dim_1

# Note you'd need to handle the case of a 0 value here

In [13]: np.argwhere(da.where(da<0,0).values)
Out[13]:
array([[0,1],[1,2]])

我同意这对本机存在于xarray中将是有用的功能;我目前尚不确定在本地执行此操作的最佳方法。开放思想!