问题描述
在 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]
但我认为它可能有点资源密集型。