微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

就地更新 xarray DataArray 中的单个值?

如何解决就地更新 xarray DataArray 中的单个值?

也许它的形式很糟糕,但是有没有办法就地更新 xarray DataArray 的单个值?我正在执行趋势分析,其中我对每个(纬度、经度)单元格进行子集化并在时间片上进行分析。

我希望能够执行以下操作:

output_array.loc[dict(lat=i,lon=j)]['intercept'] = intercept

output_array.sel(lat=i,lon=j)['intercept'] = intercept

其中 intercept 是要在 output['intercept'] DataArray 中更新的单个值(浮点数)

解决方法

xarray.DataArray 基本上是 numpy ndarray 的包装器,这意味着您可以修改底层的 numpy 数组。

您可以使用 .data.values 属性访问(和修改)数组。

import xarray as xr

# load testdata
x = xr.tutorial.load_dataset("air_temperature")

# keep second reference of array just for showcasing
arr = x.air.data

# it's the same
assert arr is x.air.data

# indices
i,j,k = (0,0)

print(x.air.data[i,k],arr[i,k])
# 241.2 241.2

# new value
x.air.data[i,k] = 0

# check
print(x.air.data[i,k])
# 0.0 0.0
,

要添加到@val 的优秀答案中,可以直接改变数组,而无需通过 .data 属性:

In [5]: x.air[i,k] = 0

In [6]: print(x.air.data[i,k])
0.0 0.0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。