【问题标题】:How to count the number of occurrences of the most repeated value along the time axis? - Xarray python如何计算时间轴上重复次数最多的值的出现次数? - Xarray 蟒蛇
【发布时间】:2021-09-28 01:20:02
【问题描述】:

在 xarray 数据集中,有人如何计算时间轴上重复值的数量?更详细地说,我想为每对(纬度,经度)坐标确定,随着时间的推移,重复次数最多的值的出现次数。我试过使用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

谢谢!

【问题讨论】:

    标签: python numpy count python-xarray


    【解决方案1】:

    我认为没有 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]
    

    但我认为这可能有点占用资源。

    【讨论】:

    • 您好亚伯,谢谢您的回答。确实,它有效,但由于 for 循环结构,它需要相当多的时间。但是,那么 Xarray 和 Numpy 都没有为此的矢量化函数呢?知道这很有趣(也很伤心)。如果将数据集转换为数据帧,Pandas 是否能够使此操作更快?谢谢
    • 嘿@Henrique,我根本不是 numpy/xarray/pandas 专家,所以我真的不知道如何优化它。我知道您可以创建自己的矢量化函数并将其与 xarray.apply_ufunc 一起使用。但首先你必须找到如何对其进行矢量化...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多