Python 基础(十) | Numpy 详细教程
⭐本专栏旨在对 Python 的基础语法进行详解,精炼地总结语法中的重点,详解难点,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握 python 编程,同时为后续的数据分析,机器学习及深度学习的代码能力打下坚实的基础。
🔥本文已收录于 Python 基础系列专栏: Python基础系列教程 欢迎订阅,持续更新。
10.1 为什么要用 Numpy
10.1.1 低效的 Python for 循环
【例】 求 100 万个数的倒数
%timeit :ipython 中统计运行时间的魔术方法(多次运行取平均值)
实现相同计算,Numpy 的运行速度是 Python 循环的 25 倍,产生了质的飞跃
10.1.2 Numpy 为什么如此高效
Numpy 是由 C 语言编写的
1、编译型语言 VS 解释型语言
C 语言执行时,对代码进行整体编译,速度更快
2、连续单一类型存储 VS 分散多变类型存储
(1)Numpy 数组内的数据类型必须是统一的,如全部是浮点型,而 Python 列表支持任意类型数据的填充
(2)Numpy 数组内的数据连续存储在内存中,而 Python 列表的数据分散在内存中
这种存储结构,与一些更加高效的底层处理方式更加的契合
3、多线程 VS 线程锁
Python 语言执行时有线程锁,无法实现真正的多线程并行,而 C 语言可以
10.1.3 什么时候用 Numpy
在数据处理的过程中,遇到使用“Python for 循环” 实现一些向量化、矩阵化操作的时候,要优先考虑用 Numpy
如: 1、两个向量的点乘
2、矩阵乘法
10.2 Numpy 数组的创建
10.2.1 从列表开始创建
设置数组的数据类型
二维数组
10.2.2 从头创建数组
(1)创建长度为 5 的数组,值都为 0
(2)创建一个 2*4 的浮点型数组,值都为 1
(3)创建一个 3*5 的数组,值都为 8.8
(4)创建一个 3*3 的单位矩阵
(5)创建一个线性序列数组,从 1 开始,到 15 结束,步长为 2
(6)创建一个 4 个元素的数组,这四个数均匀的分配到 0~1
(7)创建一个 10 个元素的数组,形成 1~10^9 的等比数列
(8)创建一个 3*3 的,在 0~1 之间均匀分布的随机数构成的数组
(9)创建一个 3*3 的,均值为 0,标准差为 1 的正态分布随机数构成的数组
(10)创建一个 3*3 的,在[0,10)之间随机整数构成的数组
(11)随机重排列
(12)随机采样
按指定形状采样
按概率采样
10.3 Numpy 数组的性质
10.3.1 数组的属性
1、数组的形状 shape
2、数组的维度 ndim
3、数组的大小 size
4、数组的数据类型 dtype
10.3.2 数组索引
1、一维数组的索引
2、多维数组的索引——以二维为例
注意:numpy 数组的数据类型是固定的,向一个整型数组插入一个浮点值,浮点值会向下进行取整
10.3.3 数组的切片
1、一维数组——跟列表一样
2、多维数组——以二维为例
3、获取数组的行和列
4、切片获取的是视图,而非副本
注意:视图元素发生修改,则原数组亦发生相应修改
修改切片的安全方式:copy
10.3.4 数组的变形
注意:reshape 返回的是视图,而非副本
一维向量转行向量
一维向量转列向量
多维向量转一维向量
flatten 返回的是副本
ravel 返回的是视图
reshape 返回的是视图
10.3.5 数组的拼接
1、水平拼接——非视图
hstack()
c_
2、垂直拼接——非视图
vstack()
r_
10.3.6 数组的分裂
1、split 的用法
2、hsplit 的用法
3、vsplit 的用法
10.4 Numpy 四大运算
10.4.1 向量化运算
1、与数字的加减乘除等 可见整体进行了向量化的运算
2、绝对值、三角函数、指数、对数
(1)绝对值
(2)三角函数
(3)指数运算
(4)对数运算
3、两个数组的运算
10.4.2 矩阵运算
矩阵的转置
矩阵乘法
注意跟 x*y 的区别,x*y 只是对应位置相乘
10.4.3 广播运算
规则
如果两个数组的形状在维度上不匹配
那么数组的形式会沿着维度为 1 的维度进行扩展以匹配另一个数组的形状。
10.4.4 比较运算和掩码
1、比较运算
2、操作布尔数组
3、将布尔数组作为掩码
作为掩码后,相应位置为 True 的就会被取出来,而相应位置为 False 的就会忽略
10.4.5 花哨的索引
1、一维数组
注意:结果的形状与索引数组 ind 一致
2、多维数组
10.5 其他 Numpy 通用函数
10.5.1 数值排序
产生新的排序数组
替换原数组
获得排序索引
10.5.2 最大最小值
10.5.3 数值求和、求积
按行求和
按列求和
全体求和
求积
10.5.4 中位数、均值、方差、标准差
中位数
均值
方差
标准差
版权声明: 本文为 InfoQ 作者【timerring】的原创文章。
原文链接:【http://xie.infoq.cn/article/f00256dc138c1d74b2cc3c297】。未经作者许可,禁止转载。
评论