如何统计时间轴上重复次数最多的值出现的次数? - X 数组 python
How to count the number of occurrences of the most repeated value along the time axis? - Xarray python
在 xarray 数据集中,如何计算沿时间轴重复值的数量?更详细地说,我想为每一对 (lat,lon) 坐标确定最重复值随时间出现的次数。我试过使用 xr.count(dim='time')
但它计算了所有迭代,我不知道如何指定我只对最重复的值感兴趣。
小例子:
array([[[10., 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]
但我认为它可能会占用一些资源。
在 xarray 数据集中,如何计算沿时间轴重复值的数量?更详细地说,我想为每一对 (lat,lon) 坐标确定最重复值随时间出现的次数。我试过使用 xr.count(dim='time')
但它计算了所有迭代,我不知道如何指定我只对最重复的值感兴趣。
小例子:
array([[[10., 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]
但我认为它可能会占用一些资源。