繁体   English   中英

设置或更改新 xarray 维度的值

[英]Set or change the values of a new xarray dimension

我有一个带有蓝色波段图像(形状 600 x 600)的 xarray DataArray,我想将其转换为伪 RGB 图像(即在 RGB 模式下查看时将显示为蓝色的图像)。 我的想法是,如果我添加两个波段(红色和绿色)并将它们的值设置为 0,就可以解决问题(我使用 rioxarray 将数组保存为 PNG)。

dummy_image = np.random.randint(0, 255, size=(600, 600))
im_xa_band = xa.DataArray(dummy_image, dims=['y', 'x'], coords={'x': np.arange(0, 600), 'y': np.arange(0, 600)})
im_xa_3band = im_xa.expand_dims({'band': 3})
im_xa_3band = im_xa_3band.assign_coords(band=['R', 'G', 'B'])

当我这样做时,两个新波段获得与原始蓝色波段相同的值。 但是,我没有找到将新波段设置为 0 的方法(或者更确切地说,如何设置它们的值,似乎是一项如此简单的任务)。

.sel() 不能用于赋值。 当我尝试 Pandas 中的 try.loc 时,出现错误:

im_xa_3band.loc['R', :, :] = 0

ValueError: Assignment destination is a view. Do you want to .copy() array first?

任何有关如何更改值的建议都将受到赞赏。

看来您需要在.copy() .expand_dims() ,请参阅此处的讨论。

im_xa_3band = im_xa.expand_dims({'band': 3}).copy()
im_xa_3band = im_xa_3band.assign_coords(band=['R', 'G', 'B'])
im_xa_3band.loc['R', :, :] = 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM