鱼C论坛

 找回密码
 立即注册
查看: 1768|回复: 5

[已解决]求教问题,python正态分布

[复制链接]
发表于 2017-12-29 20:30:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下:
import numpy as np
import pylab as pl
data = np.random.normal(5.0,3.0,10000)
pl.hist(data)
pl.xlabel('data')
pl.show()

纵坐标为什么是那些数字,还有就是为什么坐标为什么-5到15

小白一枚,最近需要python用来处理数据,0基础,求详细指教
最佳答案
2017-12-29 21:55:33
本帖最后由 solomonxian 于 2017-12-30 08:43 编辑

不太熟这个,不过你的问题确实很入门

你不是定了正态分布的均值5.0,标准差3.0,样本数10000吗?
条形图的总值 sum(横坐标*纵坐标)就接近5.0*10000

你没有指定柱子的个数bins参数,他貌似默认就是10条,所以纵坐标是这样

横坐标就更明显了,正太分布不是有3sigma原则吗,5.0±3*3.0
改变坐标轴显示范围也是可以的plt.axis([-10,30,0,5000])
给你贴出来
  1. import numpy as np
  2. import matplotlib.pyplot as plt

  3. mu, sigma = 5.0, 3.0

  4. data = np.random.normal(mu, sigma, 10000)
  5. count, bins, ignored = plt.hist(data, 30)
  6. plt.axis([-10,30,0,5000])

  7. plt.show()
复制代码
figure_1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-29 21:41:29 | 显示全部楼层
所以你到底想问什么?
不理解代码么
你调用np.random.normal()的时候就已经给出了相应的参数
产生10000个服从N(5, 3)分布的随机变量值,这直方图没什么问题啊

还是说你的需求不是这样的,那么你要给出你的需求来问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-29 21:55:33 | 显示全部楼层    本楼为最佳答案   
本帖最后由 solomonxian 于 2017-12-30 08:43 编辑

不太熟这个,不过你的问题确实很入门

你不是定了正态分布的均值5.0,标准差3.0,样本数10000吗?
条形图的总值 sum(横坐标*纵坐标)就接近5.0*10000

你没有指定柱子的个数bins参数,他貌似默认就是10条,所以纵坐标是这样

横坐标就更明显了,正太分布不是有3sigma原则吗,5.0±3*3.0
改变坐标轴显示范围也是可以的plt.axis([-10,30,0,5000])
给你贴出来
  1. import numpy as np
  2. import matplotlib.pyplot as plt

  3. mu, sigma = 5.0, 3.0

  4. data = np.random.normal(mu, sigma, 10000)
  5. count, bins, ignored = plt.hist(data, 30)
  6. plt.axis([-10,30,0,5000])

  7. plt.show()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-12-29 22:14:17 | 显示全部楼层
solomonxian 发表于 2017-12-29 21:55
不太熟这个,不过你的问题确实很入门

你不是定了正态分布的均值5.0,标准差3.0,样本数10000 ...

再弱弱的问一句啊,纵坐标为什么是0-3000,横坐标-10到20,貌似我没有设定横坐标从-10到 20,这个是python默认的 吗,默认有什么规则吗,纵坐标0-3000,液有规则吗,3sigma,5.0±3*3.0,这个不是-4到14 吗,求详解,
小白敬上。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-30 08:40:27 | 显示全部楼层
天然卷的啦 发表于 2017-12-29 22:14
再弱弱的问一句啊,纵坐标为什么是0-3000,横坐标-10到20,貌似我没有设定横坐标从-10到 20,这个是pytho ...

大兄弟,我觉得你应该是不大熟这个函数,贴上网上随便找的中文文档
  1. pyplot.hist(x, bins=None, range=None, normed=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs)

  2. 绘制直方图
  3. 参数
  4. x:输入值,数组或者n维数组序列
  5. bins:面元个数 integer或者数组或者auto,如果是Integer,那么将会产生bins+1 个面元
  6. 数组,那么面元时间可能不相等
  7. range:面元的范围,如果None,那么就是(x.min(),x.max())
  8. normed:如果是True,那么绘制频率分布直方图的时候,就会自动高度=频数/len(x)
  9. cumulative:积累直方图,默认是False,如果是True那么绘制积累直方图
  10. stacked:默认False,多个数据堆叠在一起,False:多个数据并排
  11. histtype:{'bar','barstacked','step','stepfilled'}
  12. bar:条形
  13. barstacked:条形堆积图
  14. step:生成一个线图且没有填充
  15. stepfilled:生成一个填充线图

  16. 作者:欧呆要加油
  17. 链接:https://www.jianshu.com/p/12107e055844
  18. 來源:简书
  19. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
复制代码

昨天的例子你只要访问count和bins变量就明白了
横坐标就是bins的值,他反馈了分布的横坐标的最小值和最大值,
3sigma是99.7的概率,剩下还有啊,

还有记得你用的是随机的正态分布例子,会有出入
-10到20只是视图的范围,昨天的例子不是更改过给你看了嘛嘛嘛嘛~~~

纵坐标说白了就是在横坐标范围内的个数,想象他像堆箱子一样画的直方图
出现一个堆一个,横坐标是5左右的范围一路堆到3000个
如果你是纠结积分面积不等于1,那就开启normed参数

再来个最简单的例子
  1. import matplotlib.pyplot as plt
  2. x = [1,1,1,2,3,3,3,3,]

  3. count, bins, ignored = plt.hist(x, bins=(0,1,2,3,4,5))

  4. plt.show()
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-30 13:11:21 | 显示全部楼层
solomonxian 发表于 2017-12-30 08:40
大兄弟,我觉得你应该是不大熟这个函数,贴上网上随便找的中文文档

昨天的例子你只要访问co ...

小姐姐,或者小哥哥,多谢了,我懂了。祝你早日脱单

小白敬上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 08:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表