簡體   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