总结 xarray dataarray 的列表

Summarizing a list of xarray dataarray

我有一个名称和大小相同的多个数据数组的列表,我想对所有数据数组求和并创建一个具有相同数据数组维度的单个数据数组,最好的方法是什么?

[<xarray.DataArray (latitude: 501, longitude: 894)>
 array(..., dtype=float32)
 Coordinates:
   * longitude  (longitude) float64 49.8 49.81 49.81 49.82 ... 56.98 56.99 57.0
   * latitude   (latitude) float64 27.0 27.01 27.02 27.03 ... 31.98 31.99 32.0
     year       int64 2000,
.......
.......
 <xarray.DataArray (latitude: 501, longitude: 894)>
 array(..., dtype=float32)
 Coordinates:
   * longitude  (longitude) float64 49.8 49.81 49.81 49.82 ... 56.98 56.99 57.0
   * latitude   (latitude) float64 27.0 27.01 27.02 27.03 ... 31.98 31.99 32.0
     year       int64 2020]

因为你可以用一个简单的 a + b 按元素添加两个 xarrays ab 并且你说你有一个 xarrays 的列表,所有这些都具有相同的维度(我们称之为 xrs),那么这就是你如何添加所有这些:

result = xrs[0]
for xr in xrs[1:]:
    result += xr

顺便说一句,这根本不是 xarray 特有的。如果你有一个整数列表 xs 并且你想将它们全部相加:

result = xrs[0]
for xr in xrs[1:]:
    result += xr

只要正确定义加法运算符,sum(xs) 也能正常工作。它适用于 xarray:

result = sum(xrs)