亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用常量替換所有 xarray 數據集值

用常量替換所有 xarray 數據集值

眼眸繁星 2022-12-20 13:59:55
我有一個 xarray 數據集。我想復制它,使其具有與原件相同的尺寸/坐標/形狀。這很簡單。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)然后我想為副本中的所有值分配一個常量值(假設為 1)。我已經想出如何做到這一點where:ds_copy.where(ds_copy == np.nan, other=1)但這假設我的價值觀都不會是nan而且有點違反直覺的海事組織。有沒有更穩健的方法?我想我也可以循環遍歷數據變量(這是對 Pandas 的建議)... :for v in ds_copy.data_vars:    ds_copy[v].loc[:, :] = 1也許我在這里尋找的是一種replace方法。
查看完整描述

1 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

我會推薦循環方法,因為它會保留原始值的數據類型。中只有一個省略號就可以loc了,.data_vars可以省略(數據集有字典接口):

for v in ds_copy:
    ds_copy[v].loc[:] = 1

要獲得更健壯的版本where版本,您可以False直接傳遞以確保other將始終使用:

ds_copy.where(False, 1)

在存儲 int 和 float 時,保留或不保留 dtype 可能不會有任何影響,但是,如果還有字符串或布爾變量,結果可能會發生巨大變化。


查看完整回答
反對 回復 2022-12-20
  • 1 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號