Numpy 使DataArray在默认情况下返回浮点而不是0维数组

Numpy 使DataArray在默认情况下返回浮点而不是0维数组,numpy,python-xarray,Numpy,Python Xarray,考虑以下使用DataArray的示例: In [34]: import xarray as xr In [35]: da=xr.DataArray(np.random.rand(5,5,5), dims=['x', 'y', 'z'], coords=dict(x=range(5), y=range(5), z=range(5))) In [36]: da.mean() Out[36]: <xarray.DataArray ()> array(0.547996) [34]中的

考虑以下使用DataArray的示例:

In [34]: import xarray as xr

In [35]: da=xr.DataArray(np.random.rand(5,5,5), dims=['x', 'y', 'z'], coords=dict(x=range(5), y=range(5), z=range(5)))

In [36]: da.mean()
Out[36]: 
<xarray.DataArray ()>
array(0.547996)
[34]中的
:将xarray作为xr导入
在[35]中:da=xr.DataArray(np.random.rand(5,5,5),dims=['x','y','z'],coords=dict(x=range(5),y=range(5),z=range(5)))
在[36]中:da.mean()
出[36]:
阵列(0.547996)

平均操作返回的对象的类型实际上是一个没有任何维度的DataArray。然而,有时这很麻烦,我希望
xarray
在这些时候返回一个好的ol'浮点值。这可能吗?理想情况下,会有类似“xr.options.return\u mode”之类的东西(而不是在每个函数中都使用额外的参数)。

目前,xarray没有类似于
xr.options.return\u mode的东西。从xarray:

xarray努力做到自一致:在数据阵列上执行操作 (resp.Dataset)返回另一个DataArray(resp.Dataset)对象。在里面 特别是返回标量值的操作(例如索引或 平均值或总和(应用于所有轴)等聚合也将返回 xarray对象

不幸的是,这意味着在其他库中使用xarray时,有时必须显式地强制转换结果

因此,如果需要python标量,这两种方法中的任何一种都应该有效:

float(da.mean())


目前,xarray没有类似于
xr.options.return\u mode
的功能。从xarray:

xarray努力做到自一致:在数据阵列上执行操作 (resp.Dataset)返回另一个DataArray(resp.Dataset)对象。在里面 特别是返回标量值的操作(例如索引或 平均值或总和(应用于所有轴)等聚合也将返回 xarray对象

不幸的是,这意味着在其他库中使用xarray时,有时必须显式地强制转换结果

因此,如果需要python标量,这两种方法中的任何一种都应该有效:

float(da.mean())


da.mean()。我假设
xarray
的行为也一样。从0d提取元素需要
.item()
[()]
索引。@hpaulj
da.mean()[()]
仍然返回一个数据数组,但
da.mean().item()
工作正常(很傻,但我没有想到)。如果没有更好的东西,请考虑写一个答案,这样我就可以接受它。<代码> DA.Mead()(0)<代码> @ StephenRauch,<代码>(0)< /代码>将不会在一个0D数组上工作,至少不在<代码> NUMPY < /C>中。我假设
xarray
的行为也一样。从0d提取元素需要
.item()
[()]
索引。@hpaulj
da.mean()[()]
仍然返回一个数据数组,但
da.mean().item()
工作正常(很傻,但我没有想到)。如果没有更好的东西,考虑写一个答案,这样我就可以接受它。