Numpy 使DataArray在默认情况下返回浮点而不是0维数组
考虑以下使用DataArray的示例: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]中的
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()
或[()]
索引。@hpauljda.mean()[()]
仍然返回一个数据数组,但da.mean().item()
工作正常(很傻,但我没有想到)。如果没有更好的东西,请考虑写一个答案,这样我就可以接受它。<代码> DA.Mead()(0)<代码> @ StephenRauch,<代码>(0)< /代码>将不会在一个0D数组上工作,至少不在<代码> NUMPY < /C>中。我假设xarray
的行为也一样。从0d提取元素需要.item()
或[()]
索引。@hpauljda.mean()[()]
仍然返回一个数据数组,但da.mean().item()
工作正常(很傻,但我没有想到)。如果没有更好的东西,考虑写一个答案,这样我就可以接受它。