==此篇章为工具代码部分的学习,读者有心请务必自己不看答案在草稿纸上写一写,这是我第一次复习的注释,今后的我也请记住。
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格式)
并对其进?排序、去重,并求出和、累积和、均值、标准差、?差、最?值、最?值。