np.histogram()直方图分布

np.histogram()是一个生成直方图的函数

示例如下:

首先生成了500个拉普拉斯分布随机数并且取了前10个数
>>>d = np.random.laplace(loc=15, scale=3, size=500)
>>>> d[:10]
array([13.88469924, 14.39847862, 19.09746795, 17.36852791, 22.84303082,
       20.13163875, 13.83920361, 14.64293351, 13.83945571, 14.05509207])

函数解释:
np.random.laplace可以获得拉普拉斯分布的随机值,参数主要如下:

  • loc:类似高斯分布的μ,控制偏移。
  • scale: 类似高斯分布的λ,控制缩放。
  • size: 是产生数据的个数
接下来通过取的前10个数进行直方图分布
>>> np.histogram(d)
(array([  1,   0,   0,   2,   6,  45, 242, 179,  20,   5], dtype=int64), array([-20.31921637, -15.19140308, -10.06358978,  -4.93577649,
         0.19203681,   5.3198501 ,  10.4476634 ,  15.57547669,
        20.70328999,  25.83110328,  30.95891658]))

解释:
这代表了[-20.31921637, -15.19140308]之间的元素有1个;[-15.19140308, -10.06358978]之间的元素有0个…[25.83110328, 30.95891658]之间的元素有5个


histogram分成了几个区间?

np.histogram() 默认地使用10个相同大小的区间(箱),然后返回一个元组(频数,分箱的边界),如上所示。要注意的是:这个边界的数量是要比分箱数多一个的,因为边界永远会比区域多一个值。可以简单通过下面代码证实:

>>> hist
array([  1,   0,   0,   2,   6,  45, 242, 179,  20,   5], dtype=int64)
>>> bin_edges
array([-20.31921637, -15.19140308, -10.06358978,  -4.93577649,
         0.19203681,   5.3198501 ,  10.4476634 ,  15.57547669,
        20.70328999,  25.83110328,  30.95891658])
>>> hist.size, bin_edges.size
(10, 11)

histogram内部的具体实现:
>>> # 取列表a的最小值和最大值
>>> first_edge, last_edge = a.min(), a.max()
>>> n_equal_bins = 10 # NumPy得默认设置,10个分箱
>>> bin_edges = np.linspace(start=first_edge, stop=last_edge,
...    num=n_equal_bins + 1, endpoint=True)
...
>>> bin_edges
array([ 0. , 2.3, 4.6, 6.9, 9.2, 11.5, 13.8, 16.1, 18.4, 20.7, 23. ])

首先获取a列表的最小值和最大值,然后设置默认的分箱数量,最后使用Numpy的 linspace 方法进行数据段分割。分箱区间的结果也正好与实际吻合,0到23均等分为10份,23/10,那么每份宽度为2.3。

  • 11
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值