【问题标题】:Select the values with more than one repetition when using numpy random?使用numpy random时选择重复多次的值?
【发布时间】:2017-07-10 00:31:40
【问题描述】:

我想知道在使用 numpy random 随机生成数字时如何选择重复多次的值。 我正在执行以下操作:

1) 先生成1-10之间的数字

ran = ceil( np.random.random(10)*10 )
print ran
[  2.   9.   8.   9.  10.   8.  10.   7.   1.   1.]

2) 现在使用 scipy.stats 中的 itemfreq 来获取频率表 其中第二列是频率。

freq_tmp = itemfreq(ran)
print freq_tmp
[[  1.   2.]
[  2.   1.]
[  7.   1.]
[  8.   2.]
[  9.   2.]
[ 10.   2.]]

print freq_tmp[0:][:,1] 

[ 2.  1.  1.  2.  2.  2.]

这仅显示频率,但我想知道重复次数超过 1 次的值,在此示例中应为:

[1. 8. 9. 10]

感谢您的帮助!

【问题讨论】:

  • freq_tmp[:,0][freq_tmp[:,1] > 1]

标签: python numpy random scipy statistics


【解决方案1】:

你快到了。您可以像这样在切片器中添加>

import numpy as np

a = np.array([[1,2],[2,1],[7,1],[8,2],[9,2],[10,2]])

print(a[a[:,1] > 1][:,0])

输出:

[ 1  8  9 10]

【讨论】:

    【解决方案2】:

    另一个 numpy 解决方案:

    In [57]: ran=randint(1,11,10)
    
    In [58]: ran
    Out[58]: array([3, 4, 6, 1, 9, 4, 2, 8, 6, 8])
    
    In [59]: uniqs,cnts=np.unique(ran,return_counts=True)
    
    In [60]: uniqs,cnts
    Out[60]: (array([1, 2, 3, 4, 6, 8, 9]), array([1, 1, 1, 2, 2, 2, 1], dtype=int64))
    
    In [61]: uniqs[cnts>=2]
    Out[61]: array([4, 6, 8])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-20
      • 2013-08-09
      • 1970-01-01
      • 2021-01-11
      • 2019-08-30
      • 1970-01-01
      • 2020-10-14
      • 2015-07-01
      相关资源
      最近更新 更多