我有一個(gè) xarray 數(shù)據(jù)集。我想復(fù)制它,使其具有與原件相同的尺寸/坐標(biāo)/形狀。這很簡單。import xarray as xrn_segs = 4n_dates = 5num_vars = 4dims = (n_segs, n_dates)das = [xr.DataArray(np.random.rand(*dims), dims=['seg_id', 'date']) for i in range(num_vars)]ds_orig = xr.Dataset({'a': das[0], 'b': das[1], 'c': das[2], 'd': das[3]})ds_copy = ds_orig.copy(deep=True)然后我想為副本中的所有值分配一個(gè)常量值(假設(shè)為 1)。我已經(jīng)想出如何做到這一點(diǎn)where:ds_copy.where(ds_copy == np.nan, other=1)但這假設(shè)我的價(jià)值觀都不會是nan而且有點(diǎn)違反直覺的海事組織。有沒有更穩(wěn)健的方法?我想我也可以循環(huán)遍歷數(shù)據(jù)變量(這是對 Pandas 的建議)... :for v in ds_copy.data_vars: ds_copy[v].loc[:, :] = 1也許我在這里尋找的是一種replace方法。
1 回答
達(dá)令說
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
我會推薦循環(huán)方法,因?yàn)樗鼤A粼贾档臄?shù)據(jù)類型。中只有一個(gè)省略號就可以loc了,.data_vars可以省略(數(shù)據(jù)集有字典接口):
for v in ds_copy: ds_copy[v].loc[:] = 1
要獲得更健壯的版本where版本,您可以False直接傳遞以確保other將始終使用:
ds_copy.where(False, 1)
在存儲 int 和 float 時(shí),保留或不保留 dtype 可能不會有任何影響,但是,如果還有字符串或布爾變量,結(jié)果可能會發(fā)生巨大變化。
添加回答
舉報(bào)
0/150
提交
取消
