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

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

使用 Python Xarray 的特定經緯度坐標的平均值

使用 Python Xarray 的特定經緯度坐標的平均值

SMILET 2023-03-08 15:47:55
我想使用 Xarray 計算特定經緯度點的平均值:(-41.25, -3.75)、(-38.75, -6.25) 和 (-38.75, -3.75)。這是一個簡單的想法,獲取點的值并計算平均值。我讀到xarray.DataArray.sel_points函數已停用,我不知道如何僅使用xarray.DataArray.sel進行計算。
查看完整描述

1 回答

?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

假設您有以下 DataArray:


>>> da

<xarray.DataArray (time: 5, lon: 4, lat: 3)>

array([[[...]]])

Coordinates:

  * time     (time) int64 0 1 2 3 4

  * lon      (lon) int64 0 1 2 3

  * lat      (lat) int64 0 1 2

并且您想選擇以下 (lon, lat) 點:


>>> points = [(0, 0), (0, 1), (2, 1)]  # list(tuple(lon, lat), ...)

然后,您不會堅持使用原始的 (lon, lat) 網格,因此您可以將這些維度堆疊在一起:


>>> da.stack(pos=("lon", "lat"))

<xarray.DataArray (time: 5, pos: 12)>

array([[...]])

Coordinates:

  * time     (time) int64 0 1 2 3 4

  * pos      (pos) MultiIndex

  - lon      (pos) int64 0 0 0 1 1 1 2 2 2 3 3 3

  - lat      (pos) int64 0 1 2 0 1 2 0 1 2 0 1 2

從那里,您可以選擇點:


>>> da.stack(pos=("lon", "lat")).sel(pos=points)

<xarray.DataArray (time: 5, pos: 3)>

array([[...]])

Coordinates:

  * time     (time) int64 0 1 2 3 4

  * pos      (pos) MultiIndex

  - lon      (pos) int64 0 0 2

  - lat      (pos) int64 0 1 1

計算它們的平均時間:


>>> da.stack(pos=("lon", "lat")).sel(pos=points).mean("time")

<xarray.DataArray (pos: 3)>

array([24., 25., 31.])

Coordinates:

  * pos      (pos) MultiIndex

  - lon      (pos) int64 0 0 2

  - lat      (pos) int64 0 1 1

并且,如果需要,通過取消堆疊返回到原始網格:


>>> da.stack(pos=("lon", "lat")).sel(pos=points).mean("time").unstack("pos")

<xarray.DataArray (lon: 2, lat: 2)>

array([[24., 25.],

       [nan, 31.]])

Coordinates:

  * lon      (lon) int64 0 2

  * lat      (lat) int64 0 1

請注意,會有一些nan值未選擇新網格的點(這就是我們首先堆疊的原因)。


查看完整回答
反對 回復 2023-03-08
  • 1 回答
  • 0 關注
  • 678 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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