【问题标题】:How to find multiple equally distributed means of a numpy array?如何找到一个numpy数组的多个均匀分布的方法?
【发布时间】:2021-05-23 04:39:24
【问题描述】:

假设我有一个包含 100 个数字的列表。我可以通过求和并除以元素的数量来找到平均值。但是我怎样才能找到两个值,一个偏向列表左侧(假设列表是有序的),另一个偏向右侧,以便将列表平均分为三个块?

对数组进行排序并获取第 33 个和第 66 个元素不起作用,因为我可以在第 33 个位置之前全为 1,而在之后的值更大,因此第 33 个位置在数组中为时过早。这两个“手段”取决于数组的值,而不仅仅是索引。

我确定我正在尝试做的事情有一个正确的命名,但我现在不记得了。

【问题讨论】:

    标签: python arrays list numpy mean


    【解决方案1】:

    看起来您正在尝试做的是计算“terciles”,这是quantile 的一种特殊类型。

    所以你可以使用 numpy 为你计算它:

    import numpy as np
    
    data = np.linspace(0, 1.0, 100)  # You data, here a toy example
    
    q_1, q_2 = np.quantile(data, q=[1/3, 2/3])
    q_1_idx, q_2_idx = np.searchsorted(data, [q_1, q_2], side='right')
    

    q_1, q_2 是您要查找的“平均值”,q_1_idx, q_2_idx 是数组中的相关索引。然后,要进行拆分,您只需:

    data_1, data_2, data_3 = data[:q_1_idx], data[q_1_idx:q_2_idx], data[q_2_idx:]
    

    【讨论】:

      【解决方案2】:

      你要找的东西叫做quantile,你可以看看numpy的quantile函数。

      【讨论】:

        【解决方案3】:

        您可以尝试 numpy.quantile 例如 np.quantile(your_list, [0.33, 0.66]) 我认为应该可以解决问题

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-03-25
          • 2019-07-03
          • 1970-01-01
          • 2014-12-29
          • 1970-01-01
          • 2021-01-14
          • 2010-11-20
          相关资源
          最近更新 更多