Python_NumPy

上传人:聆** 文档编号:231041434 上传时间:2021-12-28 格式:PPTX 页数:43 大小:888.25KB
返回 下载 相关 举报
Python_NumPy_第1页
第1页 / 共43页
Python_NumPy_第2页
第2页 / 共43页
Python_NumPy_第3页
第3页 / 共43页
Python_NumPy_第4页
第4页 / 共43页
Python_NumPy_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《Python_NumPy》由会员分享,可在线阅读,更多相关《Python_NumPy(43页珍藏版)》请在金锄头文库上搜索。

1、Python数据分析- NumPyNumpy 简介 NumPy 是什么? NumPy的安装NumPy 是什么?NumPy是Python的一种开源的数值计算扩展库。它包含很多功能: 创建n维数组(矩阵) 对数组进行函数运算 数值积分 线性代数运算 傅里叶变换 随机数产生NumPy 是什么?NumPy是在1995年诞生的Python库Numeric的基础上建立起来的。但真正促使NumPy的发行的是Python的SciPy库。SciPy是2001年发行的一个类似于Matlab,Maple,Mathematica等数学计算软件的Python库,它实现里面的大多数功能。但SciPy中并没有合适的类似于N

2、umeric中的对于基础的数据对象处理的功能。于是,SciPy的开发者将SciPy中的一部分和Numeric的设计思想结合,在2005年发行了NumPy。NumPy 是什么?标准的Python中用list(列表)保存值,可以当做数组使用,但因为列表中的元素可以是任何对象,所以浪费了CPU运算时间和内存。NumPy诞生为了弥补这些缺陷。它提供了两种基本的对象:ndarray:全称(n-dimensional array object)是储存单一数据类型的多维数组。ufunc:全称(universal function object)它是一种能够对数组进行处理的函数。NumPy的官方文档:http

3、s:/docs.scipy.org/doc/numpy/reference/ NumPy 的安装Anaconda里面已经安装过NumPy。原生的Python安装: 在cmd中输入 pip install numpy 在官网中下载相关版本安装 https:/pypi.python.org/pypi/numpy安装之后,我们用导入这个库 import numpy as np np._version_1.11.3并且查看版本:ndarray 对象 ndarray的创建 ndarray的属性 ndarray的切片 多维数组 结构数组ndarray的创建NumPy中的核心对象是ndarray。ndarr

4、ay可以看成数组,类似于R语言的向量或者矩阵。NumPy里面所有的函数都是围绕ndarray展开的。 a = np.array(1, 2, 3, 4) b = np.array(5, 6, 7, 8) c = np.array(1, 2, 3, 4, 5, 6, 7, 8) b c - -5, 6, 7, 8 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10ndarray对维数没有限制。 从内到外分别为第0轴,第1轴,第2轴。c第0轴长度为3,第1轴长度为4。ndarray的创建NumPy提供了专门用于生成ndarray的函数,提高创建ndarray的速度。 a = np

5、.arange(0, 1, 0.1)array( 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9) b = np.linspace(0, 1, 10)array( 0. , 0.11111111, 0.22222222, 0.33333333, 0.44444444,0.55555556, 0.66666667, 0.77777778, 0.88888889, 1. ) c = np.linspace(0, 1, 10, endpoint=False)array( 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7,

6、0.8, 0.9) d = np.logspace(0, 2, 5)array( 1. , 3.16227766, 10., 31.6227766 , 100.)ndarray的创建np.empty(2,3), np.int)创建2*3的整形型空矩阵,只分配内存np.zeros(4, np.int)创建长度为4,值为全部为0的矩阵np.full(4, np.pi)创建长度为4,值为全部为pi的矩阵 def func(i): return i % 4 + 1 np.fromfunction(func, (10,)array( 1., 2., 3., 4., 1., 2., 3., 4., 1.,

7、 2.)还可以自定义函数产生ndarray。fromfunction第一个参数接收计算函数,第二个参数接收数组的形状。ndarray的属性ndarray的元素具有相同的元素类型。常用的有int(整型),float(浮点型),complex(复数型)。 a = np.array(1, 2, 3, 4, dtype=float)array( 1., 2., 3., 4.) a.dtypedtype(float64)ndarray的shape属性用来获得它的形状,也可以自己指定。 c = np.array(1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10) c.shape(3,

8、 4) a = np.array(1, 2, 3, 4) d = a.reshape(2,2)array(1, 2, 3, 4)ndarray的切片ndarray的切片和list是一样的。 a = np.arange(10) aarray(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)a5 a3:5 a:5 a:-1 - - - -5 3, 4 0, 1, 2, 3, 4 0, 1, 2, 3, 4, 5, 6, 7, 8 a1:-1:2 a:-1 a5:1:-2- - -1, 3, 5, 7 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 5, 3 可以通过切片的对nd

9、array中的元素进行更改。 a2:4 = 100, 101 aarray( 0, 1, 100, 101, 4, 5, 6, 7, 8, 9)ndarray的切片ndarray通过切片产生一个新的数组b,b和a共享同一块数据存储空间。 b = a3:7 b2 = -10 b a - -101, 4, -10, 6 0, 1, 100, 101, 4, -10, 6, 7, 8, 9如果想改变这种情况,我们可以用列表对数组元素切片。 b = a3, 3, -3, 8 barray(3, 3, 7, 8) b2 = 100b a - -3, 3, 100, 8 0, 1, 2, 3, 4, 5,

10、 6, 7, 8, 9多维数组NumPy的多维数组和一维数组类似。多维数组有多个轴。我们前面已经提到从内到外分别是第0轴,第1轴 a = np.arange(0, 60, 10).reshape(-1, 1) + np.arange(0, 6)array( 0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25, 30, 31, 32, 33, 34, 35, 40, 41, 42, 43, 44, 45, 50, 51, 52, 53, 54, 55)a0, 3:5 a4:, 4: a2:2, :2 - - -3, 4

11、 44, 45, 20, 22, 24, 54, 55 40, 42, 44#上面方法对于数组的切片都是共享原数组的储存空间的。多维数组如果我们想创立原数组的副本,我们可以用整数元组,列表,整数数组,布尔数组进行切片。结构数组C语言中可以通过struct关键字定义结构类型。NumPy中也有类似的结构数组。 persontype = np.dtype( names:name, age, weight, formats:S30,i, f) a = np.array(Zhang, 32, 75.5), (Wang, 24, 65.2), dtype=persontype) 我们就创建了一个结构数组,

12、并且可以通过索引得到每一行。nameageweight0zhang3275.51wang2465.2 print a0(Zhang, 32, 75.5)ufunc函数 ufunc简介 四则运算 比较运算和布尔运算 自定义ufunc函数 广播(broadcasting)ufunc简介ufunc是universal function的简称,它是一种能对数组每个元素进行运算的函数。NumPy的许多ufunc函数都是用C语言实现的,因此它们的运算速度非常快。 x = np.linspace(0, 2*np.pi, 10) y = np.sin(x) yarray( 0.00000000e+00, 6.

13、42787610e-01, 9.84807753e-01,. . . . . , -2.44929360e-16)值得注意的是,对于同等长度的ndarray,np.sin()比math.sin()快但是对于单个数值,math.sin()的速度则更快。四则运算NumPy提供了许多ufunc函数,它们和相应的运算符运算结果相同。 a = np.arange(0, 4) b = np.arange(1, 5) np.add(a, b)array(1, 3, 5, 7) a+barray(1, 3, 5, 7) np.subtract(a, b) # 减法 np.multiply(a, b) # 乘法

14、 np.divide(a, b) # 如果两个数字都为整数,则为整数除法 np.power(a, b) # 乘方比较运算和布尔运算使用=,对两个数组进行比较,会返回一个布尔数组,每一个元素都是对应元素的比较结果。 np.array(1, 2, 3) np.array(3, 2, 1)array( True, False, False, dtype=bool)布尔运算在NumPy中也有对应的ufunc函数。表达式ufunc函数y=x1=x2equal(x1,x2,y)y=x1!=x2not_equal(x1,x2,y)y=x1x2less(x1,x2,y)y=x1x2greater(x1,x2,

15、y)y=x1=x2gerater_equal(x1,x2,y)自定义ufunc函数NumPy提供的标准ufunc函数可以组合出复合的表达式,但是有些情况下,自己编写的则更为方便。我们可以把自己编写的函数用frompyfunc()转化成ufunc函数。 def num_judge(x, a): #对于一个数字如果是3或5的倍数就 if x%3 = 0: 返回0,否则返回a。 r = 0 elif x%5 = 0: r = 0 else: r = a return r x = np.linspace(0, 10, 11) y = np.array(num_judge(t, 2) for t in

16、x)#列表生成式array(0, 2, 2, 0, 2, 0, 0, 2, 2, 0, 0)自定义ufunc函数使用frompyfunc()进行转化,调用格式如下: numb_judge = np.frompyfunc(num_judge, 2, 1) y = numb_judge(x,2)array(0, 2, 2, 0, 2, 0, 0, 2, 2, 0, 0, dtype=object)frompyfunc(func, nin, nout)func:计算函数nin:func()输入参数的个数nout:func()输出参数的个数因为最后输出的元素类型是object,所以我们还需要把它转换成整型。y.astype(np.int)广播(broadcasting)使用ufunc对两个数组进行运算时,ufunc函数会对两个数组的对应元素进行运算。如果数组的形状不相同,就会进行下广播处理。简而言之,就是向两个数组每一维度上的最大值靠齐。广播(broadcasting)广播(broadcasting)我们看一下具体的例子: a = np.arange(0, 60, 10).reshape(-1

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号