pythonxarray索引返回

pythonxarray索引返回,python,indexing,python-xarray,Python,Indexing,Python Xarray,我有一个多维xarray,比如: testarray = xr.DataArray([[1,-2,3],[4,5,-6]]) 我想得到一个特定条件下的指数,比如testarray小于0。 因此,预期结果应该是一个类似以下的数组: testarray = xr.DataArray([[1,-2,3],[4,5,-6]]) 结果=[[1,2],[0,1]] 或任何其他格式,让我得到这些指数进行进一步计算。无法想象,在xarray中没有解决这样一个基本问题的选项,但我找不到它。诸如此类 testa

我有一个多维xarray,比如:

testarray = xr.DataArray([[1,-2,3],[4,5,-6]])
我想得到一个特定条件下的指数,比如testarray小于0。 因此,预期结果应该是一个类似以下的数组:

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

或任何其他格式,让我得到这些指数进行进一步计算。无法想象,在xarray中没有解决这样一个基本问题的选项,但我找不到它。诸如此类

testarray.where(testarray<0)

testarray.where(testarray要获取索引,可以使用
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, -2,  3],
       [ 4,  5, -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, -2,  0],
       [ 0,  0, -6]])
Dimensions without coordinates: dim_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]])
[3]中的
:da=xr.DataArray([1,-2,3],[4,5,-6]]
在[4]中:da
出[4]:
数组([[1,-2,3],
[ 4,  5, -6]])
不带坐标的尺寸:尺寸0、尺寸1

在[14]:da.在哪里(爸爸,你在这里找过吗?是的,但我觉得我太傻了,没法让它工作;)有很好的解释如何更改与特定条件匹配的值。但我不知道如何获得与特定条件匹配的值的索引。嗨,谢谢你的解决方案。好吧,据我所知,将numpy与xarray结合起来很简单。numpy.where正是我想要的,但它是一个非常脆弱且通常是easy容易出错,因为它总是取决于类型和混合类型,可能会遇到广播错误,这让我成为了一个初学者。在更复杂的函数中,你往往会得到像xarray(np.array(xarray(np.array…)))这样的疯狂行……嗯,有时候处理起来不太好;)