用NumPy 模块对bin进行nums计算的直方图

用NumPy 模块对bin进行nums计算的直方图

在这篇文章中,我们将讨论如何使用NumPy 模块对bin进行nums计算。直方图是可视化数据集频率分布的最佳方式,它将数据集分割成大小相等的小区间,称为bin。Numpy直方图函数类似于_matplotlib库的hist()函数,唯一的区别是NumPy直方图给出数据集的数字表示,而hist()给出数据集的图形表示。

在创建直方图的时候,最好不要用分仓的方式来考虑,而是要找到每个值出现的次数,即频率表。为此目的,Python字典是非常合适的。下面是纯Python中直方图的简单实现。

# Dataset
a = (1, 3, 7, 7, 2, 3, 4, 7, 6, 6, 3, 5, 2)
 
# Creating empty dictionary
hist = {}
 
# Counting the number of occurrences
for i in a:
    hist[i] = hist.get(i, 0) + 1
 
# Printing the frequency table i.e histogram
print(hist)

输出:

{1: 1, 3: 3, 7: 3, 2: 2, 4: 1, 6: 2, 5: 1}

Numpy有一个内置的numpy.histogram()函数,以图形的形式表示数据分布的频率。具有相同水平尺寸的矩形对应于称为bin的类区间,可变高度对应于频率。

语法: numpy.histogram(data, bins=10, range=None, normed=None, weights=None, density=None)

参数:

  • data: 要绘制的数组或数组的序列。
  • bins:int或str序列,定义一个范围内等宽的bins数量,默认为10。
  • range: 可选的参数,设置分层的下限和上限范围。
  • normed:可选参数,与密度属性相同,对不等的bin宽度给出不正确的结果。
  • weights: 可选的参数,定义了与数据具有相同尺寸的权重数组。
  • density:可选参数,如果是假的,结果包含每个仓的样本数,如果是真的,结果包含仓的概率密度函数。

实现:

# Import libraries
import numpy as np 
   
# Creating dataset
a = np.random.randint(100, size =(50))
   
# Creating histogram
np.histogram(a, bins = [0, 10, 20, 30, 40,
                        50, 60, 70, 80, 90,
                        100])
   
hist, bins = np.histogram(a, bins = [0, 10, 
                                     20, 30,
                                     40, 50,
                                     60, 70,
                                     80, 90,
                                     100]) 
   
# Displaying histogram
print (hist) 
print (bins) 

输出:

[5 7 4 7 4 5 1 6 4 7]
[  0  10  20  30  40  50  60  70  80  90 100]

这里,np.histogram()函数有两个返回值_hist,它给出了直方图的数值数组,而edge_bin是一个浮动数据类型的数组,包含长度比hist多一个的bin边缘。

上述直方图的数字表示可以转换为图形形式。Matplotlib的pyplot子模块中的plt()_函数以数据集数组和bin数组为参数,创建相应数据值的柱状图。下面是一些计算nums与bin的直方图的例子。

示例 1:

# Import libraries
from matplotlib import pyplot as plt
import numpy as np
 
 
# Creating dataset
a = np.random.randint(100, size=(50))
 
# Creating plot
fig = plt.figure(figsize=(10, 7))
 
plt.hist(a, bins=[0, 10, 20, 30,
                  40, 50, 60, 70,
                  80, 90, 100])
 
plt.title("Numpy Histogram")
 
# show plot
plt.show()

输出:

用NumPy计算nums对bin的直方图

示例 2:

# Import libraries
from matplotlib import pyplot as plt
import numpy as np
 
# Creating dataset
l = [i for i in range(50)]
 
# Creating plot
plt.hist(l, bins=[1, 2, 3, 4, 5],
         color='green')
 
# show plot
plt.show()

输出:

用NumPy计算nums对bin的直方图

示例 3:

# Import libraries
from matplotlib import pyplot as plt
import numpy as np
 
# Creating dataset
l = np.random.randint(150)
 
# Creating plot
plt.hist(l, bins=l,
         color='lime')
 
# show plot
plt.show()

输出:

用NumPy计算nums对bin的直方图

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy教程