加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

numpy画柱状图

发布时间:2020-12-14 04:35:23 所属栏目:大数据 来源:网络整理
导读:给定一堆数字,需要统计这些数字中每个数字的个数。 如果这些数字是整数,那自然可以精确统计出来。 如果这些数字是浮点数,如果精确统计会发现几乎每个数字都只出现了一次。所以浮点数就要通过区间的方式进行统计。 一、使用collections.Counter from colle

给定一堆数字,需要统计这些数字中每个数字的个数。
如果这些数字是整数,那自然可以精确统计出来。
如果这些数字是浮点数,如果精确统计会发现几乎每个数字都只出现了一次。所以浮点数就要通过区间的方式进行统计。

一、使用collections.Counter

from collections import Counter

import numpy as np
import pylab as plt

a = np.random.randint(0,10,(100))
c = Counter(a)
x = c.keys()
y = c.values()
plt.plot(x,y,linewidth=5,label="counter")
cnt = np.bincount(a)
plt.plot(range(len(cnt)),cnt,label="numpy")
plt.legend()
plt.show()

二、使用np.bincount

函数原型:numpy.bincount(x,weights=None,minlength=0)
weights表示各个数字的权重,长度和x一致。

import numpy as np

a = np.array([1,2,5,7,2])
print(np.bincount(a)) #[0 1 2 0 0 1 0 1]
print(np.bincount(a,[0.1,0.2,0.5,0.7,0.2])) #[0.  0.1 0.4 0.  0.  0.5 0.  0.7]

三、使用np.histogram

numpy.histogram(a,bins=10,range=None,normed=False,density=None)

  • a:一个数组,如果是多维会被当做一维数组
  • bins:如果是一个int,表示把区间均分为bins份;如果是一个数组,表示手动指定各个bins
  • range:如果bins是一个int,使用range指定柱状图的区间
  • weights:可以为每个元素设定权重,默认每个元素权重为1
  • normed:已废弃
  • density:bool值

四、使用np.interp实现插值

numpy.interp(x,xp,fp,left=None,right=None,period=None)

  • x:一个数组,表示要取哪些地方的插值结果
  • xp、fp:x坐标和y坐标
  • left、right、period:基本用不上,不必知道

使用此函数可以只绘制一部分坐标而不用全不绘制。matplotlib内部自动会调用插值函数合理绘制图像,无需手动通过numpy调用,但当向前端传递数据让js完成绘制时,就需要手动调用numpy来进行插值。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读