学习资料:
北理-Python数据分析与展示-Numpy、Matplotlib、Pandas 作者:啥都会一点的研究生 https://www.bilibili.com/read/cv15624770 出处:bilibili
Numpy
1.1 数据的维度
1.1.1 列表与数组
相同:都表示一组数据的有序结构
相异:列表的数据类型可以不同,数组的数据类型相同
1.1.2 多维数据与高维数据
多维数据由一维或二维数据在新维度上扩展形成
高维数据仅使用最基本的二元关系(如键值对)展示数据间的复杂结构,如:
![](https://i-blog.csdnimg.cn/blog_migrate/6966597ae7067b69b6ce28718c3bd655.png)
1.1.3 数据维度的python表示
一维数据:列表和集合
二维数据:列表
多维数据:列表
高维数据:字典或数据表示格式
1.2 Numpy的数组对象ndarray
1.2.1 ndarray基本语法
数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据
![](https://i-blog.csdnimg.cn/blog_migrate/8603ebe29682bf96289ba5cd151560b1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ff3e376605a855d4447755a7e4a1b71c.png)
**np.array()**:生成一个ndarray数组
![](https://i-blog.csdnimg.cn/blog_migrate/362f5fa402aea7e946374f9c2ab881e6.png)
.ndim 秩,即轴的数量或维度的数量
.shape n行m列
.size 对象元素的个数,即n*m的值
.dtype 对象的元素类型
.itemsize 对象中每个元素所占字节的大小
1.2.2 ndarray的创建和变换
1.2.2.1 ndarray的创建
![](https://i-blog.csdnimg.cn/blog_migrate/4e5faf143e12790eb82925e46f6433a2.png)
x=np.array(list/tuple)
dtype 参数可以在创建时传入想指定的数据类型
利用函数创建ndarray数组
![](https://i-blog.csdnimg.cn/blog_migrate/417fc545dc17785383948065629d48c2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2f1aa5e5a991ffcf74acfcfd33b2d1f1.png)
使用其他函数创建ndarray数组,如:
np.linspace(起始元素,终止元素,元素个数)
endpoint参数 默认为True,当传入False时,不将终止元素算入元素个数
np.concatnate((a,b)) 连接数组a,b,注意是以元组方式传入a,b
1.2.2.2 ndarray的维度变换
.reshape(shape) 原数组不变,返回一个shape形状的数组
.resize 修改原数组,返回结果与.reshape()相同
.swapaxes(ax1,ax2) 将数组的其中两个维度进行调换
.flatten() 原数组不变,返回降维后的一维数组
1.2.2.3 ndarray的类型变换
new_a=a.astype(new_type) 原数组不变,创建新数组
1.2.2.4 ndarray转换为列表
.tolist()
1.2.3 ndarray的索引和切片
数组的索引和切片
![](https://i-blog.csdnimg.cn/blog_migrate/dc47c32607a2523c9e48bccb62f8eb4e.png)
一维数组的索引和切片:与python的列表类似
![](https://i-blog.csdnimg.cn/blog_migrate/657e9297d304c8274374f942a0d3e87b.png)
多维数组的索引
a[x,y,z]
多维数组的切片
a[: ,: ,: ] 当涉及步长时,每个维度用两个冒号表示跳跃切片
1.2.4 ndarray的运算
1.2.4.1数组与标量的运算
数组与标量的加减乘除作用于数组的每一个元素
1.2.4.2 元素级运算的函数
np.abs(x)/np.fabs(x) 计算各元素的绝对值
np.sqrt(x) 计算各元素的平方根
**np.aqare(x) ** 计算各元素的平方
np.log(x)/np.log10(x)/np.log2(x) 计算各元素的自然对数、10底对数和2底对数
**np.ceil(x)/np.floor(x)** 计算各元素的ceiling值或floor值
![](https://i-blog.csdnimg.cn/blog_migrate/cfdf81a897ff9c6c89774c5c6a305def.png)
几乎numpy的一元函数作用后都是生成了新数组 而没有改变原来的数组
1.2.4.3 二元函数
![](https://i-blog.csdnimg.cn/blog_migrate/bbbb1f471976c2ef071f64b172ab441d.png)
1.3 文件的存取
1.3.1 CSV文件存取
![](https://i-blog.csdnimg.cn/blog_migrate/f576d79a0870e098b1f310e8e0990f8f.png)
%d表示以整数形式写入文件中
%.2f表示以两位小数形式写入文件,%.1f表示以一位小数形式写入文件
![](https://i-blog.csdnimg.cn/blog_migrate/c4f12efc8889253611ab89a30ce9c896.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cc2907059c6bc4799169331716b6e1f6.png)
csv文件的局限性:只能存储一维和二维数组
1.3.2 多维数据的存取
![](https://i-blog.csdnimg.cn/blog_migrate/bec172aa2ba9d83d7e438f5f7c5ff139.png)
1.3.3 numpy的便捷文件存取
![](https://i-blog.csdnimg.cn/blog_migrate/7879a411260c92a71cc649dc6adea0a9.png)
1.4 numpy的随机数函数
numpy的random子库
np.random.*
np.random.rand() 每个元素是[0,1)的浮点数 满足均匀分布
np.random.randn() 满足正态分布
np.random.randint() 默认满足均匀分布
1.4.1 随机函数(1)
![](https://i-blog.csdnimg.cn/blog_migrate/633075b9b31db488b3948757f269593a.png)
实例化
![](https://i-blog.csdnimg.cn/blog_migrate/1b8aa49351049eda8bc6cce4cea56ff0.png)
重复使用同样的随机数种子可以在测试的时候得到相同的随机数组
1.4.2 随机函数(2)
![](https://i-blog.csdnimg.cn/blog_migrate/82454f122d463d900a639ba1c91c55a4.png)
实例化
![](https://i-blog.csdnimg.cn/blog_migrate/77e34785ddf674406a6bab08a873937a.png)
1.4.3 随机函数(3)
![](https://i-blog.csdnimg.cn/blog_migrate/83ed089b2a3ee8ea9178ea3a80ef8cd6.png)
实例化
1.5 numpy的统计函数
np.*
np.std()
np.var()
np.average()
1.5.1 统计函数(1)
![](https://i-blog.csdnimg.cn/blog_migrate/a17d098ebf238c969888f074f0aea4cb.png)
实例化
![](https://i-blog.csdnimg.cn/blog_migrate/66e2c750555937791883ee4b9d737083.png)
默认情况下 axis=None 表示对所有元素进行累加计算
axis=0 列数不变,对每一列进行计算得一个新值
axis=1 行数不变,对每一行进行计算得一个新值
1.5.2 统计函数(2)
![](https://i-blog.csdnimg.cn/blog_migrate/2d97b3a7e958aa46292ee677a8decfd2.png)
实例化
![](https://i-blog.csdnimg.cn/blog_migrate/5d8bd7299a3db905f556a7dad4f4b7b5.png)
1.6 numpy的梯度函数
np.gradient(f)
计算数组f中元素的梯度,当f为多维时,返回每个维度梯度
实例化
![](https://i-blog.csdnimg.cn/blog_migrate/7f4389474b73636356d4a59c449f785b.png)