码迷,mamicode.com
首页 > 其他好文 > 详细

画图必备numpy函数

时间:2019-04-01 00:51:07      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:表示   rand   lse   数字   函数   nump   min   length   出现   

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

一、使用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, weights=None, 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来进行插值。

画图必备numpy函数

标签:表示   rand   lse   数字   函数   nump   min   length   出现   

原文地址:https://www.cnblogs.com/weiyinfu/p/10634046.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!