==此篇章为工具代码部分的学习,读者有心请务必自己不看答案在草稿纸上写一写,这是我第一次复习的注释,今后的我也请记住。
NumPy(Numerical Python)是Python的⼀种开源的数值计算扩展。提供多维数组对象,各种派⽣对象(如掩码数组和矩阵),这种⼯具可⽤来存储和处理⼤型矩阵,⽐Python⾃身的嵌套列表(nested list structure)结构要⾼效的多(该结构也可以⽤来表示矩阵(matrix)),⽀持⼤量的维度数组与矩阵运算,此外也针对数组运算提供⼤量的数学函数库,包括数学、逻辑、形状操作、排序、选择、输⼊输出、离散傅⽴叶变换、基本线性代数,基本统计运算和随机模拟等等。
==提供多维数组对象,意味着可以储存和处理大型的矩阵,这个比python自带的list要高效很多。并且还针对数组计算给出大量的数学函数库。
==这里也是随口提一下list和numpy的区别哈,前者内部可以装多种数据类型,后者只可以一种。
⼏乎所有从事Python⼯作的数据分析师都利⽤NumPy的强⼤功能。
强⼤的N维数组;成熟的⼴播功能;⽤于整合C/C++和Fortran代码的⼯具包;NumPy提供了全⾯的数学功能、随机数⽣成器和线性代数功能
==强在四个能力,N维数组,广播功能,用来整合的工具包,和一些数学函数工具
第⼀部分 基本操作
第⼀节 数组创建
创建数组的最简单的⽅法就是使⽤array函数,将Python下的list转换为ndarray。
我们可以利⽤np中的⼀些内置函数来创建数组,⽐如我们创建全0的数组,也可以创建全1数组,全是其他数字的数组,或者等差数列数组,正态分布数组,随机数。
=不着急,一个一个来
1-创建全是0的数组,创建全是1的数组。假定大小是10个
2-创建一个两行3列的,值为2.718的数组
3-创建一个从0开始到20,步长为2的数组
4-创建一个0到9的10个数字,他们之间间隔是均匀的
5-创建一个0到100的随机数组,个数为10(整数)
6-创建一个正态分布的数组,个数为5
7-创建一个随机分布数组,个数为10(浮点型)
==第一次复习存在的问题:
①zero那里没有加上s
②包含赋值的数组创建中,使用np.full函数,并且维度用中括号扩起,用fill_value来取值
③包含起始位置和间隔参数的数组创建使用np.arange()注意是一个r
④相等间隔的函数时linspace
⑤随机创建的函数的前缀是np.random.如果是随机整数,则是np.random.randint;随机浮点数是np.random.random;正态分布则是np.random.randn
第⼆节 查看操作
NumPy的数组类称为ndarray,也被称为别名 array。请注意,numpy.array这与标准Python库类不同。array.array,后者仅处理⼀维数组且功能较少。ndarray对象的重要属性是
1.2.1 数组的轴数、维度
=创建一个三维的0-100的随机数字的数组,并输出其维度
==这里默认这是一个整数型,维度用size来控制,维度输出用ndim
=将上面数组形状输出
=输出其元素总数
=输出其数据类型
第三节 ⽂件IO操作
1.3.1 保存数组
=用save方法将ndarray保存到npy文件,用savez方法将多个array保存到一个npz文件
==这里注意save用来存一个,savez用来存多个,还有就是内部参数
利用load方法来读取储存的数组,如果是npz文件的话,读取之后相当于形成了⼀个key-value类型的变量,通过保存时定义的key来获取相应的array
=读取npy和npz文件
=读写csv,txt文件
第⼆部分 数据类型
=array创建时,指定类型为浮点型
==dtype处理数据格式
=创建array并转变为浮点型
=第三个数据类型转化方式
第三部分 数组运算
=创建两个数组,并完成加减乘除幂运算
=逻辑运算
=加减乘运算,并且只会修改现有数组,不创建新数组
第四部分 复制和视图
在操作数组时,有时会将其数据复制到新数组中,有时不复制。
==查看或浅拷贝,不同的数组对象可以共享同一个数据。
=深拷贝,创建后两者相互独立
=创建一个e的8次方大小的数组,然后在其中每隔100万个选一个数据,然后删除a,减小内存消耗。
第五部分 索引、切⽚和迭代
第⼀节 基本索引和切⽚
numpy中数组切⽚是原始数组的视图,这意味着数据不会被复制,视图上任何数据的修改都会反映到原数组上
=创建一个长度为10的任意数组,输出第5个数字
=输出5到8
=输出2开始,步长为2;倒着输出;倒着输出每两个取一个
第六部分 形状操作
=数组变形,创建一个维度为3,4,5的数组,并将其转化为12,5;然后再将其自动转化为?,5的数组。
==reshape函数,使用-1可以自动整形
=数组转置,二维与高维转置方式不同,请分别举例
==这里注意数组生成的格式,然后是高维数组转置的方法
=数组堆叠,创建两个一维数组,并将其串联(分别按行和按列)
=创建一个2维数组,从不同维度,用不同断点来拆分。
第七部分 ⼴播机制
当两个数组的形状并不相同的时候,我们可以通过扩展数组的⽅法来实现相加、相减、相乘等操作,这种机制叫做⼴播(broadcasting)
⼀维数组⼴播
==创建上述数组,并实现广播操作
==这里的第一个难点还是这个数组的创建
==创建上述数组,并实现广播操作
==这里不难看出行信息的创建是array[1,2,3],列的创建就是array[[1],[2],[3]]
三维数组⼴播3
==创建上述数组,并实现广播操作
第⼋部分 通⽤函数
第⼀节 通⽤函数:元素级数字函数
abs、sqrt、square、exp、log、sin、cos、tan,maxinmum、minimum、all、any、inner、clip、round、trace、ceil、floor
这里指一些通用函数,例如绝对值,开平方之类的,再numpy中可以轻松的直接引用。
第⼆节 where函数
where 函数,三个参数,条件为真时选择值的数组,条件为假时选择值的数组
==这个函数的应用老实说有点像if,里面3个参数,第一个是条件,第二个是成立时返回的值,第三个是不成立时返回的值。
第三节 排序⽅法
np中还提供了排序⽅法,排序⽅法是就地排序,即直接改变原数组
arr.sort()、np.sort()、arr.argsort()
第四节 集合运算函数
第五节 数学和统计函数
第九部分 线性代数
矩阵乘积
矩阵其他计算
下⾯可以计算矩阵的逆、⾏列式、特征值和特征向量、qr分解值,svd分解值
第⼗部分 实战-⽤NumPy分析鸢尾花花萼属性各项指标
案列:读取iris数据集中的花萼⻓度数据(已保存为csv格式)
并对其进⾏排序、去重,并求出和、累积和、均值、标准差、⽅差、最⼩值、最⼤值。