在实验过程中,我们经常需要统计列表中各个元素所占的数量。本文提供一种统计列表内各元素数量的方法
import random
points = np.random.randint(0,10,size=100).tolist() # 需要被统计的列表
labels = {}
l = []
for i in points: # 遍历列表 统计所包含的元素
if i not in l:
l.append(i) # 将元素存储在变量l中
l.sort() # 对l排序
print('l:',l)
for i in l:
num = points.count(i) # 遍历变量l 获取对应元素的数量
labels[str(i)] = num # 将元素 数量 以键值对装入字典
print('labels:',labels)
k = labels.keys() # 读取所有键/元素 此时k是一个可迭代序列 但不是列表
用柱状图显示:
col = ['#1f78b4','#7fc97f', '#beaed4', '#fdc086', '#ffff99','#ff0099','#ff09f9','#fff099', '#fff999','#ff9099']
x = np.arange(len(l))
x_axis = np.arange(0,2,0.1)
# 多数据并列柱状图
bar_width = 1
# plt.figure(figsize=(10, 1)) # 宽 高
n = 0
for kk in k: # 显示有几个文件
# 横坐标 柱状图高度 柱状图宽 柱状图中心
p = plt.bar(bar_width*n, labels[str(kk)], 1, align='center', color=col[n], label=kk)
# 标注对象 标签位置
plt.bar_label( p, label_type='edge')
n += 1
plt.xlabel('测试难度')
plt.ylabel('试卷份数')
plt.xticks(x,k) # 设置横坐标的刻度
# plt.yticks(x_axis)
plt.legend()
图1 随机列表内各元素数量的柱状图