就地更新 xarray DataArray 中的单个值?
Update individual value in an xarray DataArray in-place?
也许它的格式很差,但是有没有办法就地更新 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
s 基本上是 numpy
ndarrays 的包装器,这意味着你可以修改底层的 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,0)
print(x.air.data[i,j,k], arr[i,j,k])
# 241.2 241.2
# new value
x.air.data[i,j,k] = 0
# check
print(x.air.data[i,j,k], arr[i,j,k])
# 0.0 0.0
要添加到@val 的优秀答案中,可以直接改变数组,而无需通过 .data
属性:
In [5]: x.air[i,j,k] = 0
In [6]: print(x.air.data[i,j,k], arr[i,j,k])
0.0 0.0
也许它的格式很差,但是有没有办法就地更新 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
s 基本上是 numpy
ndarrays 的包装器,这意味着你可以修改底层的 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,0)
print(x.air.data[i,j,k], arr[i,j,k])
# 241.2 241.2
# new value
x.air.data[i,j,k] = 0
# check
print(x.air.data[i,j,k], arr[i,j,k])
# 0.0 0.0
要添加到@val 的优秀答案中,可以直接改变数组,而无需通过 .data
属性:
In [5]: x.air[i,j,k] = 0
In [6]: print(x.air.data[i,j,k], arr[i,j,k])
0.0 0.0