文章目录一,Numpy1.重要属性二,matpltlib1.plot(2.subplot )3.Bar )4.Numpy.histogram )5.Hist ) hist函数详细解函数内容函数详细解返回的参数滞后
一. Numpy
NumPy的主要对象是齐次多维数组。 这是一个元素表,所有元素类型都相同,元素索引为正整数元组。 在NumPy维(dimension )中称为轴(axis )。
ps .有几个轴是维度排列,符合日常生活中有x、y两个坐标轴是二维空间,进而z轴是三维空间的概念
例如,三维空间中的空点坐标[ 1,2,1 ]有一个轴。 这个轴有三个要素。 也就是说,轴的长度是3。 下面的代码区域数组有两个轴。 第一个轴的长度是2,第二个长度是3。
[1.0 .0.],[ 0.1 .2.]] Numpy的数组类称为ndarry,别名为array。 请注意,numpy.array与Python标准库的array.array类不同,标准库的类只处理一维数组。
1 .重要属性ndarray.ndim
thenumberofaxes(dimensions ) of the array。
ndarray.shape
数组维(the dimensions of the array )。 将数组中每个维的大小表示为整数元组。 例如,对于n行m列的矩阵,其shape属性为[n,m]。 thelengthoftheshapetupleisthereforethenumberofaxes,ndim。
ndarray.size
数组元素的总数。 相当于shape各元素的乘积。
ndarray.dtype
描述数组中元素类型的对象。 可以使用Python标准指定此对象。 NumPy还提供了自己的类型,如numpy.int32、numpy.int16和and numpy.float641
ndarray.itemsize
数组中每个元素的字节大小。 For example,anarrayofelementsoftypefloat 64 hasitemsize8(=64/8 ),whileoneoftypecomplex 32 hasitemsize4)=32/8.itis
二、Matpltlib参考:私人教程
Matplotlib是一个python绘图库,经常与Numpy一起使用。 也可以停止有效的Matlab开源替代方案,将其与图形工具包(如PyQt或wxPython )一起使用。
plt.title (图标题) PLT.xlabel轴标识符) (PLT.ylabel ) (y轴标识符) )创建x和y值
x=NP.arange (1,11 ) y=2*x5 )1.plot ) )直线绘制使用matplotlib的pyplot子模块的plot )函数进行。
PLT.plot(x,y ) plt.show ) )。
显示点而不是线的步骤
PLT.plot(x,y,' ob ' ) plt.show ) )。
2.Subplot ) )可以在同一张图上画不同的东西。
importnumpyasnpimportmatplotlib.pyplotasplt #正弦和余弦曲线上的点的x和y坐标x=NP.arange(0, 3 *计算3*NP.pi,0.1 ) y_sin=NP.sin(x ) y_cos=np.cos(x ) x )高度2,宽度1 )第一个subplotPLT.subplot ) 2, 1 )激活#出图y_sin ) PLT.title('sine ' )激活第二个subplot,第二个图像PLT.subplot (2,1,2 ) plt.plot(x
3.bar (按打印)子模块提供bar (用于生成条形图)。
frommatplotlibimportpyplotaspltx=[ 5,8,10 ] y=[ 12,16,6 ] x2=[ 6,9,11 ] y2=[ 6,15,7 ] PLT.bar (cololor
X axis') plt.show() 4.Numpy.histogram()数据频率分布地图形表示,水平尺寸相等的矩形对应于类间隔,称为 wxdl,变量 height 对应于频率。
numpy.histogram()函数将输入数组和 wxdl 作为两个参数。 wxdl 数组中的连续元素用作每个 wxdl 的边界。
a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27])hist,wxdls = np.histogram(a,wxdls = [0,10,20,30,40,100])print (hist)print (wxdls)输出结果为:
[2 1 3 1 8][ 0 10 20 30 40 100]其中hist为频率,wxdls是边界
5.Hist()可以将直方图的数字转换为图形,pyplot子模块的hist()函数将包含数据和 wxdl 数组的数组作为参数,并转换为直方图。
x : (n,) array or sequence of (n,) arrays
(数组或(允许长度不等的)数组序列)
wxdls:整数值或序列。
如果wxdls为整数值,则wxdls为柱子个数,根据数据的取值范围和柱子个数wxdls计算每个柱子的范围值,柱宽=(x.max()-x.min())/wxdls。例:数据取值为[1,2,3,4,5,6],wxdls=6,柱宽=0.8333…,则每个柱子的范围分别为:[1,1.83), [1.83,2.66)…,[5.17,6]如果wxdls取值为序列,则该序列给出每个柱子的范围值(即边缘)。除最后一个柱子外,其他柱子的取值范围均为半开(左闭右开)。接上例,数据共n=6个取值,若wxdls=range(1,n+2)即wxdls的取值为[1,2,3,4,5,6,7],注意range用法。则每个柱子的范围为:[1,2),[2,3),…,[5,6),[6,7]。注意:这里可以看出为什么wxdls的取值需要包含7,因为最后一个柱子的取值范围是全闭的,如果取值只到6,则最后一个柱子的范围为[5,6],取值为5和6的数据将被合并计算。range : tuple or None, optional
元组(tuple)或None。剔除较大和较小的离群值,给出全局范围。如果为None,则默认为(x.min(), x.max())。如果wxdls取值为序列,则range无效,python会基于wxdls的取值画图。
density:布尔值
如果为true,则返回的元组的第一个参数frequency将为频率而非默认的频数。可自行验证sum(frequency)。
normed : boolean, optional(?)是否将得到的直方图向量归一化
normed=True表示正则化直方图,即归一化(即求频率)
weights : (n, ) array_like or None, optional
与x形状相同的权重数组。将x中的每个元素乘以对应权重值再计数。如果normed或density取值为True,则会对权重进行归一化处理。这个参数可用于绘制已合并的数据的直方图。
cumulative : boolean, optional
布尔值。如果为True,则计算累计频数。如果normed或density取值为True,则计算累计频率。
bottom : array_like, scalar, or None
数组,标量值或None。每个柱子底部相对于y=0的位置。如果是标量值,则每个柱子相对于y=0向上/向下的偏移量相同。如果是数组,则根据数组元素取值移动对应的柱子。
histtype : {‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’}, optional(选择展示的类型,默认为bar)
'bar’是传统的条形直方图;'barstacked’是堆叠的条形直方图;'step’是未填充的条形直方图,只有外边框;‘stepfilled’是有填充的直方图。当histtype取值为’step’或’stepfilled’,rwidth设置失效,即不能指定柱子之间的间隔,默认连接在一起。
align : {‘left’, ‘mid’, ‘right’}, optional(对齐方式)
‘left’:柱子的中心位于wxdls的左边缘;‘mid’:柱子位于wxdls左右边缘之间;‘right’:柱子的中心位于wxdls的右边缘。可在上面两张图中求证。
orientation : {‘horizontal’, ‘vertical’}, optional(直方图方向)
如果取值为horizontal,则条形图将以y轴为基线,水平排列
log : boolean, optional(log刻度)
布尔值。如果取值为True,则坐标轴的刻度为对数刻度。如果log为True且x是一维数组,则计数为0的取值将被剔除,仅返回非空的(frequency, wxdls, patches)。
color : color or array_like of colors or None, optional(颜色设置)
体颜色,数组(元素为颜色)或None。
label : string or None, optional(刻度标签)
字符串(序列)或None。有多个数据集时,用label参数做标注区分。
stacked : boolean, optional
布尔值。如果取值为True,则输出的图为多个数据集堆叠累计的结果,见下图;如果取值为False且histtype=‘bar’或’step’,则多个数据集的柱子并排排列
frequency(官方文档用n表示):数组或数组列表。柱子的高,即频数或频率值,数据类型为float。
wxdls:每个柱子的左右边缘值(即区间范围),例子见上文输入参数wxdls。
patches:列表或列表的列表。取值为每个柱子包含的数据。
参考链接:
matplotlib.pyplot.hist参数详解
Python matplotlib.pyplot.hist函数 参数详解
x是直方图平滑前各个柱子的值组成的数组
def Smooth_f(x): ''' 用来实现直方图数据平滑的函数 :param x: 输入一个列表 :return: ''' print("smooth begin") print(x) y = x.copy() for i in range(1, len(y)): y[i] = 0.5*(y[i]+y[i-1]) # print([i, y[i]]) print(y) return y直方图平滑前:
第一次平滑:
第二次平滑