【发布时间】:2014-09-24 01:24:06
【问题描述】:
我想从 Python 中多个大向量的集合中计算 percentiles。与其尝试连接向量然后将生成的巨大向量通过numpy.percentile,还有更有效的方法吗?
我的想法是,首先,计算不同值的频率(例如,使用scipy.stats.itemfreq),其次,结合不同向量的这些项目频率,最后,根据计数计算百分位数。
不幸的是,我无法找到用于组合频率表(这不是很简单,因为不同的表可能涵盖不同的项目)或从项目频率表计算百分位数的函数。我需要实现这些,还是可以使用现有的 Python 函数?这些功能是什么?
【问题讨论】:
-
你是对的! Counter 类可以做我想做的第一部分,你可以把它们加起来。我只需要一个函数来计算计数器的百分位数,这将使答案完整。
-
@Geza 如果您发布示例输入并希望输出包括您自己尝试过的代码,那会更容易。
-
@Banana 是的,我知道您通常在 StackOverflow 上这样做。但是我不能真正发布那些巨大的数组(它们实际上是长波形文件的一部分;但是任何列表或 numpy 数组都可以用来测试代码)。我提到了我考虑过的功能;请注意,我什至不是在寻找代码,只是在寻找函数名称。我想我所能做的就是链接一个页面来解释百分位数的含义。我会这样做的。
-
连接向量有什么问题?计算百分位数可能非常昂贵,因此可能会摊销连接成本。为了在 numpy 中进行有效的百分位数计算,您需要 1.9 版