楼主: qijiongli
25021 5

[问答] python下如何求众数? [推广有奖]

  • 4关注
  • 3粉丝

已卖:828份资源

院士

14%

还不是VIP/贵宾

-

威望
0
论坛币
4380 个
通用积分
178.7546
学术水平
10 点
热心指数
13 点
信用等级
6 点
经验
57644 点
帖子
1595
精华
0
在线时间
1045 小时
注册时间
2009-6-8
最后登录
2025-12-30

楼主
qijiongli 发表于 2016-3-28 12:02:28 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
numpy.mean()
numpy.median()
可以分别求均值,中位数,
但是却没有
numpy.mode()求众数的函数
还是说,numpy有,只是我不知道函数名?
望知道的pythoner告知一下,谢谢

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python median Numpy Media mean python 如何

已有 1 人评分论坛币 收起 理由
三世相思2013 + 20 鼓励积极发帖讨论

总评分: 论坛币 + 20   查看全部评分

沙发
python爱好者 发表于 2016-3-28 18:53:41
>>> import numpy as np
>>> a = np.array([1,2,3,1,2,1,1,1,3,2,2,1])
>>> counts = np.bincount(a)
>>> print np.argmax(counts)
1
已有 1 人评分经验 论坛币 收起 理由
三世相思2013 + 60 + 60 热心帮助其他会员

总评分: 经验 + 60  论坛币 + 60   查看全部评分

藤椅
python爱好者 发表于 2016-3-28 19:00:38
>>> from scipy.stats import mode
>>> mode([1,2,3,1,2,1,1,1,3,2,2,1])
(array([ 1.]), array([ 6.]))
>>> most_frequent = mode([1,2,3,1,2,1,1,1,3,2,2,1])[0][0]
>>> most_frequent
1.0

板凳
qijiongli 发表于 2016-3-29 22:21:27
python爱好者 发表于 2016-3-28 18:53
>>> import numpy as np
>>> a = np.array([1,2,3,1,2,1,1,1,3,2,2,1])
>>> counts = np.bincount(a)
谢谢
谢谢

报纸
exeron21 在职认证  发表于 2017-9-6 15:26:25
用第一种方法求10万个数的众数,只需要0.01秒
第二种方法要18秒

数据量达到20万时,第二种方法算很久都没反应,求解

地板
exeron21 在职认证  发表于 2017-9-6 15:43:48
  1. # -*- coding:utf-8 -*-
  2. # 测试用python和numpy求最大最小等值,哪个快
  3. import random as ran
  4. import numpy as np
  5. import datetime as dd


  6. nlist = []
  7. x1 = range(199999)
  8. for i in x1:
  9.     nlist.append(ran.randint(1,99999))

  10. d1 = dd.datetime.now()
  11. coun = np.bincount(nlist)
  12. print coun
  13. print np.argmax(coun)
  14. d2 = dd.datetime.now()
  15. print "耗时: ", d2 - d1

  16. b={}
  17. for i in nlist:
  18.     if i not in b:
  19.         b[i] = 1
  20.     else:
  21.         b[i] += 1
  22. if (len(b) > 0):
  23.     _mode = max(b.iteritems(), key = lambda x: x[1])[0]
  24. d4 = dd.datetime.now()
  25. print _mode
  26. print "耗时: ", d4 - d2

  27. from scipy.stats import mode
  28. print mode(nlist)[0][0]
  29. d5 = dd.datetime.now()
  30. print "耗时: ", d5 - d4
复制代码
结果:

[0 3 0 ..., 3 1 3]
3276
耗时:  0:00:00.018000
3276
耗时:  0:00:00.105000
3276
耗时:  0:00:44.675000

scipy怎么会这么慢? 求解

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 01:33