繁体   English   中英

numpy 阵列中的滤波元件具有一定的最小频率

[英]filtering elements in numpy array with a certain minimum frequency

我有一个包含 5000 个计数的数组,需要对其进行卡方检验。 然而,该测试仅在每个值的预期频率 > 5 时才有效。 我使用collections.Counter(x)找到了数据集中每个值的频率,我可以看到有一些频率为 1 或 2 的值。现在我想从我的原始数据集 x 但我不知道该怎么做。

一旦我删除了这些点,我需要创建一个预期的泊松分布以用于卡方检验,但再次确保预期的频率大于 5。 我已经使用stats.poisson.rvs进行了一些分布,但是有没有办法可以确保频率始终高于 5? 还是最好通过我的问题第一部分中的步骤创建发行版和 go?

将阵列过滤到特定频率(例如>5 )的一种方法是( a是您的原始阵列):

#this method assumes array a is consists of integers
a[np.in1d(a, np.where(np.bincount(a)>5)[0])]

另一种方法是:

#works for non-integer arrays
values, counts = np.unique(a, return_counts=True)
a[np.in1d(a, values[counts>5])]

我猜bincount解决方案更快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM