一、numpy库

numpy:科学计算包,支持N维数组运算、处理大型矩阵、成熟的广播函数库、矢量运算、线性代数、傅里叶变换、随机数生成,并可与C++/Fortran语言无缝结合。树莓派Python v3默认安装已经包含了numpy。

另:scipy:scipy依赖于numpy,提供了更多的数学工具,包括矩阵运算、线性方程组求解、积分、优化、插值、信号处理、图像处理、统计等等。

1.扩展库numpy简介

导入模板:(交换式)

 >>>import numpy as np

2.numpy库应用于数组

(1)简单数组的生成

>>>import numpy as np   #把列表转化为数组
>>> np.array([0,1,2,3,4])
array([0, 1, 2, 3, 4])

>>>np.array((0,1,2,3,4))   # 元组转化为数组array([0, 1, 2, 3, 4])

>>>np.array(range(5))     # 把range对象转换成数组
  array([0, 1, 2, 3, 4])

>>>np.array([[1,2,3,4,],[5,6,7,8]])  #二维数组
  array([[1, 2, 3, 4],
        [5, 6, 7, 8]])

>>>np.arange(8)   # 类似于内置函数range()

array([0,1,2,3,4,5,6,7])

>>>np.arange(1,10,1)   #以步长为二的数组
  array([1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> np.linspace(0, 10, 11)         # 等差数组,包含11个数
array([  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.])>>> np.linspace(0, 10, 11, endpoint=False) # 不包含终点
array([ 0.        ,  0.90909091,  1.81818182,  2.72727273,  3.63636364,4.54545455,  5.45454545,  6.36363636,  7.27272727,  8.18181818,9.09090909])>>> np.logspace(0, 100, 10)        # 对数数组
array([ 1.00000000e+000,   1.29154967e+011,   1.66810054e+022,2.15443469e+033,   2.78255940e+044,   3.59381366e+055,4.64158883e+066,   5.99484250e+077,   7.74263683e+088,1.00000000e+100])>>> np.logspace(1,6,5, base=2)     # 对数数组,相当于2 ** np.linspace(1,6,5)
array([  2.        ,   4.75682846,  11.3137085 ,  26.90868529,  64.        ])>>> np.zeros(3)                    # 全0一维数组
array([ 0.,  0.,  0.])>>> np.ones(3)                     # 全1一维数组
array([ 1.,  1.,  1.])

(2)0,1数组、单位矩阵的生成

>>> np.zeros((3,3))              # 全0二维数组,3行3列
[[ 0.  0.  0.][ 0.  0.  0.][ 0.  0.  0.]]>>> np.zeros((3,1))              # 全0二维数组,3行1列
array([[ 0.],[ 0.],[ 0.]])>>> np.zeros((1,3))              # 全0二维数组,1行3列
array([[ 0.,  0.,  0.]])>>> np.ones((1,3))               # 全1二维数组
array([[ 1.,  1.,  1.]])>>> np.ones((3,3))               # 全1二维数组
array([[ 1.,  1.,  1.],[ 1.,  1.,  1.],[ 1.,  1.,  1.]])>>> np.identity(3)      # 单位矩阵
array([[ 1.,  0.,  0.],[ 0.,  1.,  0.],[ 0.,  0.,  1.]])>>> np.identity(2)
array([[ 1.,  0.],[ 0.,  1.]])>>> np.empty((3,3))     # 空数组,只申请空间而不初始化,元素值是不确定的
array([[ 0.,  0.,  0.],[ 0.,  0.,  0.],[ 0.,  0.,  0.]])

(3)数组与数值的简单运算

>>> x = np.array((1, 2, 3, 4, 5))    # 创建数组对象
>>> x
array([1, 2, 3, 4, 5])>>> x * 2                            # 数组与数值相乘,返回新数组
array([ 2, 4, 6, 8, 10])>>> x / 2                            # 数组与数值相除
array([ 0.5, 1. , 1.5, 2. , 2.5])>>> x // 2                           # 数组与数值整除
array([0, 1, 1, 2, 2], dtype=int32)>>> x ** 3                           # 幂运算
array([1, 8, 27, 64, 125], dtype=int32)>>> x + 2                            # 数组与数值相加
array([3, 4, 5, 6, 7])>>> x % 3                            # 余数
array([1, 2, 0, 1, 2], dtype=int32)

>>> 2 ** x array([2, 4, 8, 16, 32], dtype=int32)

>>> 2 / x array([2. ,1. ,0.66666667, 0.5, 0.4])

>>> 63 // x array([63, 31, 21, 15, 12], dtype=int32)

(4)数组与数组之间的运算

>>> a = np.array((1, 2, 3))
>>> b = np.array(([1, 2, 3], [4, 5, 6], [7, 8, 9]))
>>> c = a * b                   # 数组与数组相乘
>>> c                           # a中的每个元素乘以b中的对应列元素
array([[ 1, 4, 9],[ 4, 10, 18],[ 7, 16, 27]])>>> c / b                       # 数组之间的除法运算
array([[ 1.,  2.,  3.],[ 1.,  2.,  3.],[ 1.,  2.,  3.]])>>> c / a
array([[ 1.,  2.,  3.],[ 4.,  5.,  6.],[ 7.,  8.,  9.]])>>> a + a                         # 数组之间的加法运算
array([2, 4, 6])>>> a * a                         # 数组之间的乘法运算
array([1, 4, 9])>>> a - a                         # 数组之间的减法运算
array([0, 0, 0])>>> a / a                         # 数组之间的除法运算
array([ 1.,  1.,  1.])

(5)数组的转置

>>> b = np.array(([1, 2, 3], [4, 5, 6], [7, 8, 9]))
>>> b
array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])>>> b.T                           # 转置
array([[1, 4, 7],[2, 5, 8],[3, 6, 9]])>>> a = np.array((1, 2, 3, 4))
>>> a
array([1, 2, 3, 4])>>> a.T                           # 一维数组转置以后和原来是一样的
array([1, 2, 3, 4])

(6)点积/内积

>>> a = np.array((5, 6, 7))
>>> b = np.array((6, 6, 6))
>>> a.dot(b)                                # 向量内积
108>>> np.dot(a,b)
108>>> c = np.array(([1,2,3],[4,5,6],[7,8,9])) # 二维数组
>>> c.dot(a)                                # 二维数组的每行与一维向量计算内积
array([ 38, 92, 146])>>> a.dot(c)                # 一维向量与二维向量的每列计算内积
array([78, 96, 114])

(7)数组元素访问

>>> b = np.array(([1,2,3],[4,5,6],[7,8,9]))
>>> b
array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])>>> b[0]              # 第0行
array([1, 2, 3])>>> b[0][0]           # 第0行第0列的元素值
1>>> b[0,2]            # 第0行第2列的元素值
3>>> b[[0,1]]          # 第0行和第1行
array([[1, 2, 3],[4, 5, 6]])>>> b[[0,1], [1,2]]   #第0行第1列的元素和第1行第2列的元素
array([2, 6])

3、numpy库应用于矩阵

(1)矩阵的简单运算

>>> a_list = [3, 5, 7]
>>> a_mat = np.matrix(a_list)            # 创建矩阵
>>> a_mat
matrix([[3, 5, 7]])>>> a_mat.T                              # 矩阵转置
matrix([[3],[5],[7]])>>> a_mat.shape                          # 矩阵形状
(1, 3)>>> a_mat.size                           # 元素个数
3>>> a_mat.mean()                         # 元素平均值
5.0>>> a_mat.sum()                          # 所有元素之和
15>>> a_mat.max()                          # 最大值
7>>> a_mat.max(axis=1)                    # 横向最大值
matrix([[7]])>>> a_mat.max(axis=0)                    # 纵向最大值
matrix([[3, 5, 7]])###------------------------------------------------------------###
>>> b_mat = np.matrix((1, 2, 3))         # 创建矩阵
>>> b_mat
matrix([[1, 2, 3]])>>> a_mat * b_mat.T                      # 矩阵相乘
matrix([[34]])###------------------------------------------------------------###
>>> c_mat = np.matrix([[1, 5, 3], [2, 9, 6]]) # 创建二维矩阵
>>> c_mat
matrix([[1, 5, 3],[2, 9, 6]])>>> c_mat.argsort(axis=0)                     # 纵向排序后的元素序号
matrix([[0, 0, 0],[1, 1, 1]], dtype=int64)>>> c_mat.argsort(axis=1)                     # 横向排序后的元素序号
matrix([[0, 2, 1],[0, 2, 1]], dtype=int64)>>> d_mat = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> d_mat.diagonal()                          # 矩阵对角线元素
matrix([[1, 5, 9]])

(2)矩阵不同维度上的计算

>>> x = np.matrix(np.arange(0,10).reshape(2,5))  # 二维矩阵
>>> x
matrix([[0, 1, 2, 3, 4],[5, 6, 7, 8, 9]])>>> x.sum()                                      # 所有元素之和
45>>> x.sum(axis=0)                                # 纵向求和
matrix([[ 5,  7,  9, 11, 13]])>>> x.sum(axis=1)                                # 横向求和
matrix([[10],[35]])>>> x.mean()                                     # 平均值
4.5>>> x.mean(axis=1)
matrix([[ 2.],[ 7.]])>>> x.mean(axis=0)
matrix([[ 2.5,  3.5,  4.5,  5.5,  6.5]])>>> x.max()                                # 所有元素最大值
9>>> x.max(axis=0)                          # 纵向最大值
matrix([[5, 6, 7, 8, 9]])>>> x.max(axis=1)                          # 横向最大值
matrix([[4],[9]])>>> weight = [0.3, 0.7]                    # 权重
>>> np.average(x, axis=0, weights=weight)
matrix([[ 3.5,  4.5,  5.5,  6.5,  7.5]])###——————————————-----------------------###
>>> x = np.matrix(np.random.randint(0, 10, size=(3,3)))   #建立矩阵
>>> x
matrix([[3, 7, 4],[5, 1, 8],[2, 7, 0]])>>> x.std()                         # 标准差
2.6851213274654606>>> x.std(axis=1)                   # 横向标准差
matrix([[ 1.69967317],[ 2.86744176],[ 2.94392029]])>>> x.std(axis=0)                   # 纵向标准差
matrix([[ 1.24721913,  2.82842712,  3.26598632]])>>> x.var(axis=0)                   # 纵向方差
matrix([[  1.55555556,   8.        ,  10.66666667]])

3、scipy简单应用

scipy在numpy的基础上增加了大量用于数学计算、科学计算以及工程计算的模块,包括线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等。

模块 说明

constants

常数

special

特殊函数

optimize 数值优化算法,如最小二乘拟合(leastsq)、函数最小值(fmin系列)、非线性方程组求解(fsolve)等等

interpolate

插值(interp1d、interp2d等等)

integrate

数值积分
signal

信号处理

ndimage 图像处理,包括滤波器模块filters、傅里叶变换模块fourier、图像插值模块interpolation、图像测量模块measurements、形态学图像处理模块morphology等等
stats 统计

misc

提供了读取图像文件的方法和一些测试图像

io

提供了读取Matlab和Fortran文件的方法

(1)scipy的special模块包含了大量函数库,包括基本数学函数、特殊函数以及numpy中的所有函数。

>>> from scipy import special as S
>>> S.cbrt(8)                # 立方根
2.0>>> S.exp10(3)               # 10**3
1000.0>>> S.sindg(90)              # 正弦函数,参数为角度
1.0>>> S.round(3.1)             # 四舍五入函数
3.0>>> S.round(3.5)
4.0>>> S.round(3.499)
3.0>>> S.comb(5,3)               # 从5个中任选3个的组合数
10.0>>> S.perm(5,3)               # 排列数
60.0>>> S.gamma(4)                # gamma函数
6.0>>> S.beta(10, 200)           # beta函数
2.839607777781333e-18>>> S.sinc(0)                 # sinc函数
1.0>>> S.sinc(1)
3.8981718325193755e-17

二、matplotlib库

  • matplotlib模块依赖于numpy模块和tkinter模块,可以绘制多种形式的图形,包括线图、直方图、饼状图、散点图、误差线图等等。
  • matplotlib是提供数据绘图功能的第三方库,其pyplot子库主要用于实现各种数据展示图形的绘制。

1、matplotlib.pyplot库概述

matplotlib.pyplot是matplotlib的子库,引用方法如下:

>>>import  matplotlib.pyplot as plt

(1)中文显示

>>>import matplotlib
>>>matplotlib.rcParams['font.family']='SimHei'
>>>matplotlib.rcParams['font.sans-serif']=['SimHei']

拓展:字体

字体名称 字体英文表示
宋体 SimSun
黑体 SimHei
楷体 KaiTi
微软雅体 Microsoft  YaHei
隶书 LiSu
仿宋 FangSong
幼圆 YouYuan
华文宋体 STSong
华文黑体 STHeiti
苹果丽中黑 Apple LiGothic Medium

(2)matplotlib.pyplot库解析

使用plt代替matplotlib.pyplot;plt子库提供了一批操作和绘图函数,每个函数代表对图像进行的一个操作,比如创建绘图区域,添加标注或者修改坐标轴等。这些函数采用pl.<b>()形式调用,其中<b>是具体函数名称。

plt库的绘图区域函数:

函数 描述
plt.figure(figsize=None,facecolor=None) 创建一个全局绘图区域
plt.axes(rect,axisbg='w') 创建一个坐标系风格的子绘图区域
plt.subplot(nrows,ncols,plot_number) 在全局绘图区域中创建一个子绘图区域
plt.subplots_adjust() 调整子绘图区域的布局

1.1//使用figure()函数创建一个全局绘图区域,figsize参数可以指定绘图区域的宽度和高度,单位为英寸

>>>plt.figure(figsize=(8,4))

1.2// 绘图之前也可以不调用figure()函数创建全局区域

>>>plt.figure(figsize=(8,4))
>>>plt.show()

1.3// subplot()用于在全局绘图区域内创建子绘图区域,其参数表示将全局绘图区域分成 nrows行和 ncols 列,并根据先行后列的计算方式在plot_number位置生成一个坐标系。(下面代码表示全局绘图区域被分割成3*2的网格,在第4个位置绘制了一个坐标系)

>>>plt.subplot(324)
>>>plt.show()

1.4//  axes()默认创建一个subplot(111)坐标系,参数rec=[left,bottom,width,height]中4个变量的范围都为[0,1],表示坐标系与全局绘图区域的关系;axisbg指背景色,默认为white。

>>>plt.axes([0.1,  0.1, 0.7,  0.3 ],axisbg='y')
>>>plt.show()

2、plt 子库提供了一组读取和显示相关的函数,用于在绘图区域中增加显示内容及读入数据

函数 描述
plt.legend() 在绘图区域中国放置绘图标签(也称图注)
plt.show() 显示创建的绘图对象
plt.matshow() 在窗口显示数组矩阵
plt.imshow() 在axes上显示图像
plt.imsave() 保存数组为图像文件
plt.imread() 从图像文件中读取数组

3、plt 库的基本图表函数(共17个)

操作 描述
plt.plot(x,y,label,width) 根据x、y数组绘制直线、曲线
plt.boxplot(date,notch,position) 绘制一个箱型图(Box-plot)
plt.bar(left,height,width,bottom) 绘制一个条形图
plt.barh(bottom,width,height,left) 绘制一个横向条形图
plt.polar(theta,r) 绘制一个极坐标图
plt.pie(date,explode) 绘制饼图
plt.psd(x,NFFT=256,pad_to,Fs) 绘制功率谱密度图
plt.specgram(x,NFFT=256,pad_to,F) 绘制谱图
plt.cohere(x,y,NFFT=256,Fs) 绘制X-Y的相关性函数
plt.scatter() 绘制散点图(x,y是长度相同的序列)
plt.step(x,y,where) 绘制步阶图
plt.hist(x,bins,normed) 绘制直方图
plt.contour(X,Y,Z,N) 绘制等值线
plt.vlines() 绘制垂直线
plt.stem(x,y,linefmt,markermt,basefmt) 绘制曲线每个点到水平轴线的垂线
plt.plot_date() 绘制数据日期
plt.plotfile() 绘制数据后写入文件

另:plot()函数是用于绘制直线的最基础的函数,调用方式很灵活,x和y可以是numpy计算出的数组,并用关键字参数指定各种属性。其中,label表示设置标签并在图例(legend)中显示,color表示曲线的颜色,linewidth表示曲线的宽度。在字符串前后添加“$”符号,与latex中绘制公式差不多。

eg.绘制基本三角函数

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,6,100)
y=np.cos(2*np.pi*x)*np.exp(-x)+0.8
plt.plot(x,y,'k',color='r',linewidth=3,linestyle='-')
plt.show()

4.plt库的坐标轴设置函数

函数 描述
plt.axis('V','off','equal','scaled',tight','image') 获取设置轴属性的快捷方法
plt.xlim(xmin,xmax) 设置当前x轴取值范围
plt.ylim(ymin,ymax) 设置当前y轴取值范围
plt.xscale() 设置x轴缩放
plt.yscale() 设置y轴缩放
plt.autoscale() 自动缩放轴视图的数据
plt.text(x,y,s,fontdic,withdash) 为axes图轴添加注释
plt.thetagrids(angles,labels,fmt,frac) 设置极坐标网络theta的位置
plt.grid(on/off) 打开或者关闭坐标网络

eg.(图如下:)

>>>import matplotlib.pyplot as plt
>>>plt.plot([1,2,4],[1,2,3])
>>>plt.axis()   #获取当前坐标轴范围
(0.85, 4.15, 0.9, 3.1)
>>>plt.axis([0,5,0,8])  #4个变量分别是[xmin,xmax,ymin,ymax]
[0, 5, 0, 8]
plt.show()

5.plt库的标签设置函数

函数 描述
plt.figlegend(handles,label,loc) 为全局绘图区域放置图注
plt.legend() 为当前坐标图放置图注
plt.xlabel() 设置当前x轴的标签
plt.ylabel() 设置当前y轴的标签
plt.xticks(array,'a','b','c') 设置当前x轴刻度位置的标签和值
plt.yticks(array,'a','b','c') 设置当前y轴刻度位置的标签和值
plt.clabel(cs,v) 为等值线图设置标签
plt.get_figlabels() 返回当前绘图区域的标签列表
plt.figtext(x,y,s,fontdic) 为全局绘图区域添加中心标题
plt.title() 设置标题
plt.suptitle() 为当前绘图区域添加中心标题
plt.text(x,y,s,fontdic,withdash) 为坐标轴添加注释
plt.annotate(note,xy,xytext,xycoords,textcoords,arrowprops) 用箭头在指定数据点创建一个注释或一段文本

eg.带标签的坐标系

eg.带标签的坐标系

import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif']=['SimHei']
plt.plot([1,2,4],[1,2,3])
plt.title('yyp')     #坐标系标题
plt.xlabel('时间(s)')
plt.ylabel('范围(m)')
plt.xticks([1,2,3,4,5],[r'$\pi/3$',r'$2\pi/3$',r'$\pi/$',r'$4\pi/3$',r'$5\pi/3$',])
plt.show()

6.plt库提供了三个区域填充函数,对绘图区域填充颜色

函数 描述
fill(x,y,color) 填充多边形
fill_between(x,y1,y2,where,color) 填充两条曲线围成的多边形
fill_betweenx(y,x1,x2,where,hold) 填充两条水平线之间的区域

eg.带局部阴影的坐标系

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,1000)
y=np.cos(2*np.pi*x)*np.exp(-x)+0.8
plt.plot(x,y,'k',color='r',label="$exp-decay$",linewidth=3)
plt.axis([0,6,0,1.8])
ix=(x>0.8)&(x<3)
plt.fill_between(x,y,0,where=ix, \facecolor='grey',alpha=0.25)
plt.text(0.5*(0.8+3),0.2,r"$\int_a^b f(x)\mathrm{d}x$",\horizontalalignment='center')
plt.legend()
plt.show()

如图所示:

三、多级雷达图绘制[numpy、matplotlib综合运用]

(1)

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='simHei'
matplotlib.rcParams['font.sans-serif']=['simHei']   #显示中文
labels=np.array(['综合','KDA','发育','推进','生存','输出'])
nAttr=6
date=np.array([7,5,6,9,8,7])     #数据值
angles=np.linspace(0,2*np.pi,nAttr,endpoint=False)     #画出极坐标(角度)
date=np.concatenate((date,[date[0]]))
angles=np.concatenate((angles,[angles[0]]))
fig=plt.figure(facecolor="white")     #创建一个全局绘图区域,背景色为白色
plt.subplot(111,polar=True)     #创建子绘图区域,1*1网格,在第1个位置绘图(极坐标),
plt.plot(angles,date,'bo-',color='g',linewidth=2)
plt.fill(angles,date,facecolor='g',alpha=0.25)    #填充颜色
plt.thetagrids(angles*180/np.pi,labels)   #设置极坐标网络 theta 的位置
plt.figtext(0.52,0.95,'DOTA能力值雷达图',ha='center')    #标签
plt.grid(True)   # 显示背景的网格线
plt.savefig('dota_radar.JPG')  #保存图片
plt.show()

图如下:

(2)【作业: 把python123作业的成绩,画出雷达图,写上学号。】

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='simHei'
matplotlib.rcParams['font.sans-serif']=['simHei']
labels=np.array(['第二周','第三周','第四周','第五周','第六周'])
nAttr=5
date=np.array([100,97.5,85,55,70])#数据值
angles=np.linspace(0,2*np.pi,nAttr,endpoint=False)
date=np.concatenate((date,[date[0]]))
angles=np.concatenate((angles,[angles[0]]))
fig=plt.figure(facecolor="white")
plt.subplot(111,polar=True)
plt.plot(angles,date,'bo-',color='g',linewidth=2)
plt.fill(angles,date,facecolor='g',alpha=0.25)
plt.thetagrids(angles*180/np.pi,labels)
plt.figtext(0.52,0.95,'17杨宇平',ha='center')
plt.grid(True)
plt.savefig('grade.JPG')
plt.show()

雷达图如图所示:

四、图像的手绘效果

这是一个使用  numpy  和  PLT  库提取图像特征形成手绘效果的实例

from PIL import Image
import numpy as npa = np.asarray(Image.open("D:/Python练习/小宠物.jpg").convert('L')).astype('float')depth = 10.                      # (0-100)
grad = np.gradient(a)             #取图像灰度的梯度值
grad_x, grad_y =grad               #分别取横纵图像梯度值
grad_x = grad_x*depth/100.
grad_y = grad_y*depth/100.
A = np.sqrt(grad_x**2 + grad_y**2 + 1.)
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1./Avec_el = np.pi/2.2                   # 光源的俯视角度,弧度值
vec_az = np.pi/4.                    # 光源的方位角度,弧度值
dx = np.cos(vec_el)*np.cos(vec_az)   #光源对x 轴的影响
dy = np.cos(vec_el)*np.sin(vec_az)   #光源对y 轴的影响
dz = np.sin(vec_el)              #光源对z 轴的影响

b = 255*(dx*uni_x + dy*uni_y + dz*uni_z)     #光源归一化
b = b.clip(0,255)im = Image.fromarray(b.astype('uint8'))  #重构图像
im.show()

五、Python实现正态分布

绘制正态分布概率密度函数

# Python实现正态分布
# 绘制正态分布概率密度函数
import math
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
u = 0     # 均值μ
u01 = -2
sig = math.sqrt(0.2)     # 标准差δ
sig01 = math.sqrt(1)
sig02 = math.sqrt(5)
sig_u01 = math.sqrt(0.5)
x = np.linspace(u - 3*sig, u + 3*sig, 50)
x_01 = np.linspace(u - 6 * sig, u + 6 * sig, 50)
x_02 = np.linspace(u - 10 * sig, u + 10 * sig, 50)
x_u01 = np.linspace(u - 10 * sig, u + 1 * sig, 50)
y_sig = np.exp(-(x - u) ** 2 /(2* sig **2))/(math.sqrt(2*math.pi)*sig)
y_sig01 = np.exp(-(x_01 - u) ** 2 /(2* sig01 **2))/(math.sqrt(2*math.pi)*sig01)
y_sig02 = np.exp(-(x_02 - u) ** 2 / (2 * sig02 ** 2)) / (math.sqrt(2 * math.pi) * sig02)
y_sig_u01 = np.exp(-(x_u01 - u01) ** 2 / (2 * sig_u01 ** 2)) / (math.sqrt(2 * math.pi) * sig_u01)
plt.plot(x, y_sig, "r-", linewidth=2)
plt.plot(x_01, y_sig01, "g-", linewidth=2)
plt.plot(x_02, y_sig02, "b-", linewidth=2)
plt.plot(x_u01, y_sig_u01, "m-", linewidth=2)
# plt.plot(x, y, 'r-', x, y, 'go', linewidth=2,markersize=8)
plt.grid(True)
plt.show()

图如下:

转载于:https://www.cnblogs.com/yyp-20190107/p/10741501.html

【数据分析与科学计算可视化】numpy 和 matplotlib库总结相关推荐

  1. Python可以这样学(第四季:数据分析与科学计算可视化)-董付国-专题视频课程...

    Python可以这样学(第四季:数据分析与科学计算可视化)-7534人已学习 课程介绍         董付国老师系列教材<Python程序设计(第2版)>(ISBN:9787302436 ...

  2. Python编程及应用--数据分析与科学计算可视化培训班

    附件: 一.[培训对象] 各高等院校大数据相关学科.计算机.软件.数字媒体.信息管理.统计.电子商务等专业教师,在读高年级本科生及研究生.从事计算机.云计算.大数据.互联网等相关领域项目的科研院所的项 ...

  3. python科学计算之numpy+pandas+matplotlib+mysql

    简介 本文主要介绍了读取mysql中的数据,将其保存至numpy和pandas中,通过matplotlib进行可视化数据分析. 一.环境搭建 使用anaconda搭建科学计算环境,并安装相关软件包. ...

  4. python划分网格区域_分面网格分类图_Python数据分析与科学计算数据可视化篇:Matplotlib和Seaborn_机器学习视频-51CTO学院...

    购买本课程所在专题<Python数据分析师:0基础到数据分析达人>https://edu.51cto.com/topic/2570.html,赠送一本"Python相关图书&qu ...

  5. numpy 创建加一行_数据科学|可视化图解Python科学计算包Numpy

    文章申明 文章作者:梁斌伟 责任编辑:郭德真 微信编辑:玖蓁 本文转载自公众号 实战统计学 (ID:statrcn) 原文链接:可视化图解Python科学计算包NumPy 作者:梁斌伟 编者按: 你真 ...

  6. 【转】5.3 Python的科学计算包 - Numpy

    numpy(Numerical Python extensions)是一个第三方的Python包,用于科学计算.这个库的前身是1995年就开始开发的一个用于数组运算的库.经过了长时间的发展,基本上成了 ...

  7. 科学计算工具NumPy(1):ndarray的创建于数据类型

    科学计算工具NumPy(1):ndarray的创建于数据类型 科学计算工具NumPy(2):ndarray的矩阵处理 科学计算工具NumPy(3):ndarray的元素处理 Numpy(Numeric ...

  8. 科学计算工具NumPy(3):ndarray的元素处理

    科学计算工具NumPy(1):ndarray的创建于数据类型 科学计算工具NumPy(2):ndarray的矩阵处理 科学计算工具NumPy(3):ndarray的元素处理 元素计算函数 ceil() ...

  9. 科学计算工具NumPy(2):ndarray的矩阵处理

    科学计算工具NumPy(1):ndarray的创建于数据类型 科学计算工具NumPy(2):ndarray的矩阵处理 科学计算工具NumPy(3):ndarray的元素处理 ndarray的矩阵运算 ...

  10. 什么是科学计算机可视化,科学计算可视化

    作科学计算可视化(visualization in scientific computation;ViSC) [编辑] 什么是科学计算可视化 科学计算可视化也称为可视化,其定义为:"可视化是 ...

最新文章

  1. javaweb学习总结(四十)——编写自己的JDBC框架
  2. Guava中针对集合的 filter和过滤功能
  3. 蛮力法求最大字段和时间复杂度_只需十个字,让你掌握推拿手法的秘诀
  4. Linux下安装Jboss
  5. Tcp Keepalive和HTTP Keepalive详解
  6. 初识设计模式(装饰者模式)
  7. [转]调整 VirtualBox 虚拟机的磁盘大小
  8. 快速清理Exchange 2003中的SMTP队列
  9. 初级办公计算机,初级(计算机办公软件应用)教案
  10. 思维导图——线性代数知识点总结
  11. DDD领域驱动设计实战(六)-领域服务
  12. 网友上海求职指南2007
  13. Hadoop高可用安装
  14. vb.net 教程 3-4 窗体编程 公共控件7 DateTimePicker MonthCalendar
  15. ibm虚拟化 用的服务器品牌,浅析IBM i虚拟化技术
  16. Spring Security(安全)
  17. oracle能用hql吗,使用HQL查询日期,Oracle报“Invalid number”
  18. 0001-Flink安装---Flink安装(Standlone模式)
  19. IMX6ULL与STM32F103的CAN通信实现
  20. 【转来自我同事的一篇分享】 UOS安装部分无法打印的惠普打印机驱动

热门文章

  1. edge设置IE兼容模式
  2. ImportError: DLL load failed while importing Qsci
  3. Excel如何合并单元格
  4. windows快捷键一览表
  5. spss多元线性回归散点图_SPSS多元线性回归.pdf
  6. php代码实现微信代扣,html5+如何通过native.js实现APP微信支付代扣签约?
  7. 产品经验谈:什么是用户画像?用户画像的一些应用案例
  8. 网易云课堂整站源码 THINKPHP二开仿网易云课堂
  9. win7快捷关闭计算机,win7关机快捷键和重启快捷键是什么?
  10. 适合孕妇吃的低糖水果