numpy画柱状图

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

一、使用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值

猜你喜欢

转载自www.cnblogs.com/weiyinfu/p/10634046.html