如何计算沿时间轴重复次数最多的值的出现次数? - Xarray 蟒蛇

问题描述

在 xarray 数据集中,如何计算沿时间轴重复值的数量?更详细地说,我想确定每对(纬度,经度)坐标,随着时间的推移出现最多重复值的次数。我试过使用 xr.count(dim='time') 但它计算所有迭代,我不知道如何指定我只对最重复的值感兴趣。

小例子:

array([[[10.,10.,1.,2.,3.,2.]]],dtype=float32)
Coordinates:
  * time     (time) int32 2013 2014 2016 2017 2018 2019 2020
  * lat      (lat) float64 -13.64 
  * lon      (lon) float64 -55.11 

预期输出(最重复值的出现次数):

Out: 3

谢谢!

解决方法

我认为没有 xarray 或 numpy 运算符可以直接执行此操作。 但是,您可以使用 values = np.unique(da) 找到每个唯一值。
然后对于每个唯一值,使用以下内容计算其出现次数:

possible_values = np.unique(da)
acc = []
for val in possible_values:
  acc.append( { "value": val,"count": (ds.tmax==val).sum() })
index_of_max = np.argmax(list(map(lambda x: x["count"],acc)))
max = acc[index_of_max]

但我认为它可能有点资源密集型。