《3-4-2数组的基本运算教学课件PPT.pptx》由会员分享,可在线阅读,更多相关《3-4-2数组的基本运算教学课件PPT.pptx(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、3-4-2数组的基本运算弘 德 明 志 博 学 笃 行第第3 3章章 科学计算科学计算-Numpy-Numpy第第0505讲讲 数组的基本数组的基本运算运算主讲人:马学强弘 德 明 志 博 学 笃 行Contents目录01布尔运算布尔运算算术运算算术运算02函数运算函数运算03统计计算统计计算04字符串函数字符串函数05弘 德 明 志 博 学 笃 行04统计计算弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行统计基本概念中心倾向:是对数据中心位置的度量,主要包括均值、中位数、分位数/百分位数、众数等,但这些统计量的适用性却有很大的区别。离散度:是数据离散程度的一种度量。如果统计的
2、值很小,甚至接近于0,则表示数据聚集在一起;如果统计的值很大,则表示数据的离散度很高。主要包括极差、方差、标准差、期望等。相关性:用来衡量两个变量因素的相关密切程度,具有相关性的元素之间需要存在一定的联系或者概率,主要包括协方差、相关系数等。相关性因果关系。统计可以把不确定性进行量化,用精确的方式来表达,从而掌握不确定的程度。统计学是我们赖以理解数据的数学与技术,使用统计可以帮助我们提炼和表达数据的相关特征。 描述性统计指标:中心倾向、离散度、偏态与峰态等 推论性统计分析:回归分析、相关性分析、主成分分析等。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行中心倾向-均值 a = n
3、p.array(1, 2, 3, 4) #创建二维数组 np.mean(a) #计算平均值,不考虑权值2.5 np.mean(a, axis=0) #按列方向array( 2., 3.) np.mean(a, axis=1) #按行方向array( 1.5, 3.5)#加权时计算公式为avg=sum(a*weights)/sum(weights) data=list(range(1,11) #列表1,2,3,4,5,6,7,8,9,10 np.average(data) #不加权5.5 np.average(data,weights=range(10,0,-1) #加权4.0 data = n
4、p.arange(6).reshape(3,2) dataarray(0, 1, 2, 3, 4, 5) np.average(data,axis=1,weights=1./4, 3./4) #按列加权array(0.75, 2.75, 4.75)弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行中心倾向-中位数 a = np.array(10, 7, 4, 3, 2, 1) #创建数组 aarray(10, 7, 4, 3, 2, 1) np.median(a) #所有元素排序后的中位数3.5 np.median(a, axis=0) #按列计算中位数array( 6.5, 4.5
5、, 2.5) np.median(a, axis=1) #按行计算中位数array( 7., 2.)中位数(median)表示数据中间点的值,它不依赖于每一个数据的值,数据集中的值增加或减小,可不影响中位数的大小。中位数的计算,一般需要预先排序。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行中心倾向-百分位数 a = np.array(10, 7, 4, 3, 2, 1) aarray(10, 7, 4, 3, 2, 1) np.percentile(a, 50) #对应为中位数3.5 np.percentile(a,30) #有专门的计算公式2.5 np.percentile(
6、a, 50, axis=0) #按列计算百分位数array( 6.5, 4.5, 2.5)分位数(quantile)是中位数的泛化概念,表示少于数据中特定百分比的一个值。百分位数(percentile)常用于描述一组有序数据中的各数据项如何在最小值和最大值之间分布。如学生某门课程的测验成绩中,12%的学生为D,50%的学生为C,30%的学生为B,8%的学生为A。如果某位同学的成绩为B,则该同学比12%+50%+15%=77%的学生成绩“更好或相同”。更多参数out、overwrite_input、interpolation、keepdims请参阅帮助信息或教材示例弘 德 明 志 博 学 笃 行
7、弘 德 明 志 博 学 笃 行中心倾向-百分位数百分位数的计算方法弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行中心倾向-众数 x=np.array(0, 1, 1, 3, 2, 1, 7) y=np.bincount(x) #返回0-7之间各个数出现的次数 yarray(1, 3, 1, 1, 0, 0, 0, 1, dtype=int32) y.size=np.amax(x)+1 #x中的最大值比y中的数字个数小1True np.argmax(y) #y中最大值的索引1众数(mode):指出现次数最多的一个或多个数。该统计量并不常用。Numpy提供了bincount函数计算数
8、组中从0到最大值之间各个值出现的次数。在该函数的计算结果(函数的返回值)中,最大值的下标索引值即为众数。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行离散度-极差 x = np.arange(4).reshape(2,2) xarray(0, 1, 2, 3) np.ptp(x, axis=0) #沿第1个轴(列方向)的极差array(2, 2) np.ptp(x, axis=1) #沿第2个轴(行方向)的极差array(1, 1)极差(range):指数据集中最大值和最小值的差,可表示为Ran(X)=Max(X)-Min(X)。它不依赖于整个数据集。Numpy中使用ptp函数计
9、算极差。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行离散度-方差 a = np.array(1, 2, 3, 4) #创建二维数组 np.var(a) #计算方差1.25 np.var(a, axis=0) #按列方向array( 1., 1.) np.var(a, axis=1) #按行方向array( 0.25, 0.25)弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行离散度-标准差 a = np.array(1, 2, 3, 4) #创建二维数组 np.std(a) #计算标准差,方差的平方根1.1180339887498949 np.std(a, axis
10、=0) #按列方向array( 1., 1.) np.std(a, axis=1) #按行方向array( 0.5, 0.5)弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行离散度-期望弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行相关性-协方差#两个变量x1、x2是完全相关的,但其变化方向相反 x = np.array(0, 2, 1, 1, 2, 0).T #转置 x #两行对应两个变量,且x1上升,x2下降array(0, 1, 2, 2, 1, 0) np.cov(x) #x1、x2的协方差矩阵,-1表示负相关array( 1., -1., -1., 1.)
11、x = -2.1, -1, 4.3 y = 3, 1.1, 0.12 X = np.stack(x, y), axis=0) #沿列方向拼接数组 X #X由x、y两个一维数组拼接而成array(-2.1 , -1. , 4.3 , 3. , 1.1 , 0.12) print(np.cov(X) #二维数组在不同维度上的协方差 11.71 -4.286 -4.286 2.14413333 print(np.cov(x, y) #两个变量x、y的协方差 11.71 -4.286 -4.286 2.14413333 print(np.cov(x) #变量x的方差11.71弘 德 明 志 博 学 笃
12、 行弘 德 明 志 博 学 笃 行相关性-相关系数 x=np.array(1,2,3) #创建一维数组 y=np.array(4,5,6) np.corrcoef(x,y) #皮尔逊相关系数array(1., 1., 1., 1.)corrcoef()函数返回一个相关矩阵,其中的每个元素值表示对应行号、列号的两个变量之间的相关系数。如第1行第1列的值表示x和它自身的相关系数;第2行第2列的值表示y和它自身的相关系数;非主对角线元素的值表示x和y之间的相关系数,一般认为小于0.3时为弱相关,高于0.8时为高度相关。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行高级计算-卷积(con
13、volve)在数学上,卷积的本质是一种积分运算,是求如拉普拉斯(Laplace)变换、傅里叶(Fourier)变换等函数变换的有效方法,在工程的很多领域都有广泛应用。在信号处理中,卷积可表示任意时刻输出信号值是输入信号或序列的加权积分或加权和。在图像处理中,卷积常用作图像的锐化,进行边缘提取或消除噪声,即用一个模板矩阵与图像做卷积运算,从而扩大或减小目标与目标之间的差异,达到突出边缘特征或降低噪声的作用。在光学成像中,利用卷积的扩散特性,若卷积的结果表示光波场能量,分布范围的增加就意味着能量的扩散。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行高级计算-卷积计算实例0123459
14、87654321b ba ac c01234567987654321j ji ik k弘 德 明 志 博 学 笃 行高级计算-卷积计算实例弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行高级计算-Numpy中的卷积计算Numpy只提供了两个一维序列的离散、线性卷积计算,可用于信号处理中线性时不变系统对信号的效应模型或符合概率原理的两个独立随机变量,其和的分布等于这两个随机变量的卷积。numpy.convolveInput:A123Output:B045index5400054014540213540322540415弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行高级计
15、算-梯度(gradient)梯度是有大小和方向的矢量,具有明确的物理和几何意义,梯度分析方法已经成为求解最优化问题的常用方法之一,在数据挖掘和分析,如机器学习、回归分析等方面梯度下降法应用广泛。除此之外,梯度的计算和分析也成为图像处理中非常有效的方法,在图像边缘检测、图像配准、图像分割和增强等很多方面都有应用。概念概念物理意义物理意义导数导数偏导数偏导数方向导数方向导数梯度梯度弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行高级计算-方向导数的定义弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行高级计算-梯度的定义弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃
16、 行高级计算-Numpy中梯度的计算规则弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行高级计算-Numpy梯度计算示例 f = np.array(1, 2, 4, 7, 11, 16, dtype=float) #一维数组 np.gradient(f) #边界点采用一阶差分,中间点采用中值差分array( 1. , 1.5, 2.5, 3.5, 4.5, 5. ) np.gradient(f, 2) #差分间隔相同,为一个常数,采用一阶差分计算array( 0.5 , 0.75, 1.25, 1.75, 2.25, 2.5 ) x = np.arange(f.size) np.g
17、radient(f, x) #差分间隔均匀array( 1. , 1.5, 2.5, 3.5, 4.5, 5. ) x = np.array(0., 1., 1.5, 3.5, 4., 6., dtype=float) np.gradient(f, x) #差分间隔非均匀array( 1. , 3. , 3.5, 6.7, 6.9, 2.5)#二维数组的梯度,每一维度分别计算差分,其结果为一个数组#该例中,第1个数组为按列差分;第2个数组按行差分 np.gradient(np.array(1, 2, 6, 3, 4, 5, dtype=float)array( 2., 2., -1., 2.,
18、 2., -1.), array( 1. , 2.5, 4. , 1. , 1. , 1. )弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行高级计算-Numpy梯度计算示例#二维数组的梯度,axis=0上的差分间隔均匀,axis=1上的差分间隔非均匀 dx = 2. #按行差分的间隔 y = 1., 1.5, 3.5 #按列差分的间隔 np.gradient(np.array(1, 2, 6, 3, 4, 5, dtype=float), dx, y)array( 1. , 1. , -0.5, 1. , 1. , -0.5), array( 2. , 2. , 2. , 2.
19、, 1.7, 0.5) x = np.array(0, 1, 2, 3, 4) f = x*2 np.gradient(f, edge_order=1) #边界点按一阶差分计算array( 1., 2., 4., 6., 7.) np.gradient(f, edge_order=2) #边界点按二阶差分计算array(-0., 2., 4., 6., 8.)#按列差分 np.gradient(np.array(1, 2, 6, 3, 4, 5, dtype=float), axis=0)array( 2., 2., -1., 2., 2., -1.)弘 德 明 志 博 学 笃 行弘 德 明
20、志 博 学 笃 行统计计算-Numpy其它统计函数函数语法函数语法功能描述功能描述prod(a, axis=None, dtype=None)在给定的轴上求数组元素的积sum(a, axis=None, dtype=None)在给定的轴上求数组元素的和cumprod(a, axis=None, dtype=None)沿给定的轴依次计算数组元素的累乘积cumsum(a, axis=None, dtype=None)沿给定的轴依次计算数组元素的累加和diff(a, n=1, axis=-1)计算沿指定轴的第n个离散差分amin(a, axis=None)返回数组的最小值或沿指定轴上维度最小的一维数
21、组amax(a, axis=None)返回数组的最大值或沿指定轴上维度最小的一维数组弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行辛普森悖论(Simpsons paradox)辛普森悖论是指分析数据时可能会发生意外,即如果忽略了混杂变量,相关系数会有误导性。如在某个条件下的两组数据,分别讨论时都会满足某种性质,可是一旦合并考虑,却可能导致相反的结论。海岸海岸成员数成员数平均朋友数平均朋友数西海岸西海岸1018.2东海岸东海岸1036.5西海岸的数据科学家更喜欢交朋友吗?海岸海岸学位学位成员数成员数平均朋友数平均朋友数西海岸西海岸博士353.1东海岸东海岸博士703.2西海岸西海岸
22、非博士6610.9东海岸东海岸非博士3313.4增加学位因素,东海岸的朋友数变多了辛普森悖论现象在现实中时有发生。如果将相关系数的计算建立在其他条件都相同的假设前提之下,并以此衡量两个变量之间的关系,很可能会得出一些误导性的结论。避免这种窘境的理想做法是充分了解你要分析的数据,尽可能核查所有可能的混杂因素。显然,这也不可能万无一失。弘 德 明 志 博 学 笃 行05字符串函数弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行字符串函数Numpy库中除常用的数值计算函数外,针对数据类型(dtype)为numpy_string或numpy_unicode的数组对象,也提供了若干对字符串进
23、行向量化操作的函数,这些函数的返回值都是一个ndarray对象。函数语法函数语法功能描述功能描述add(x1,x2)将字符数组x1、x2逐个字符连接multiply(a,i)将字符数组a重复i次连接center(a, width, fillchar= )生成长度为width的字符串,其中字符串a位于其中央,其余用fillchar参数指定的字符填充capitalize(a)将字符数组a的首字母大写title(a)将字符数组a中的所有元素按标题格式转换lower(a)将字符数组a按元素转换为小写upper(a)将字符数组a按元素转换为大写split(a, sep=None, maxsplit=No
24、ne)按照sep参数指定的分隔符对字符数组a中的单词进行分割strip(a, chars=None)将字符数组a中所有元素的开头和结尾处与chars匹配的字符移除join(sep,seq)将数组seq中的元素按字符分别用数组sep对应元素的字符串分割连接replace(a, old, new, count=None)按元素将字符数组a的old子串用new指定的字符串替换decode(a,encoding=None,errors=None)按元素将数组a中的字符用encoding指定的格式解码,如encoding=”cp037”encode(a,encoding=None,errors=None
25、)按元素将数组a中的字符用encoding指定的格式编码弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行Numpy字符串函数操作示例 x1=Hello x2= World! print(np.char.add(x1,x2)Hello World! print(np.char.multiply(x1,3)HelloHelloHello print(np.char.center(x1,20,*)*Hello* print(np.char.capitalize(she is pretty)She is pretty print(np.char.title(she is pretty)Sh
26、e Is Pretty print(np.char.strip(arora,admin,java,a)ror dmin jav print(np.char.join(:,-,dmy,ymd)d:m:y y-m-d a=np.array(Hello world,Today is sunny) print(np.char.split(a,sep= )list(Hello, world) list(Today, is, sunny) b=np.array(He is a good boy,She is pretty) print(np.char.replace(b,is,was)He was a good boy She was pretty c=np.array(您好,世界) print(np.char.encode(c,utf-8)bxe6x82xa8xe5xa5xbd bxe4xb8x96xe7x95x8c弘 德 明 志 博 学 笃 行谢谢大家1.统计计算有哪些主要指标特征?统计计算有哪些主要指标特征?2.卷积、梯度的主要应用场景是什么?卷积、梯度的主要应用场景是什么?