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

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

xarray:從*本地*每月平均值計算每日異常的時間序列

xarray:從*本地*每月平均值計算每日異常的時間序列

守候你守候我 2022-10-18 17:51:46
我目前正在處理每日氣候數據 (ERA5),并正在使用 xarray 對其進行分析。da<xarray.DataArray (time: 8036)>dask.array<stack, shape=(8036,), dtype=float32, chunksize=(1,), chunktype=numpy.ndarray>Coordinates:  * time     (time) datetime64[ns] 1979-01-01 1979-01-02 ... 2000-12-31我想從時間序列的當地月平均值計算這些數據的每日異常值。也就是說,我想從 1979 年 1 月的所有日子中去掉(例如) 1979 年 1 月的平均值。我想在我的數組中每年的每個月都這樣做。我認為目前沒有一種簡單的方法可以用 xarray 做到這一點,但我很感激人們能找到任何解決方法!:)
查看完整描述

2 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

一個稍微漂亮的方法,它可以讓您了解如何將事物擴展到其他類型的異常是:


da = da.assign_coords(year_month=da.time.dt.strftime("%Y-%m"))

result = da.groupby("year_month") - da.groupby("year_month").mean("time")


查看完整回答
反對 回復 2022-10-18
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

好的,如果有人感興趣,我想我已經找到了答案,不過我會暫時擱置這個問題,因為在我看來,這是一個非常丑陋的解決方案,如果有比我能拼湊出來的更好的解決方案,那就太好了一起!


da_cp = da.copy().load()


for year in ['1979', '1980', '1981', ..., '1998', '1999', '2000']:

    for month in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']:

        da_cp.loc[f'{year}-{month}'] -= da_cp.loc[f'{year}-{month}'].mean('time')

我已經對此進行了數字測試,它給出了正確的答案,但目前它不是很靈活,我希望這也能擴展到“局部季節性異?!薄?/p>


查看完整回答
反對 回復 2022-10-18
  • 2 回答
  • 0 關注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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