如何解决就地更新 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 举报,一经查实,本站将立刻删除。