Python—numpy的基本使用(机器学习基础)
一.numpy概述
1.NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。
2.numpy(Numerical Python)提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,快速、节省空间。numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
3.NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:
- 一个强大的N维数组对象 ndarray
- 比较成熟的(广播)函数库
- 整合 C/C++/Fortran 代码的工具
- 线性代数、傅里叶变换、随机数生成等功能
numpy和稀疏矩阵运算包scipy配合使用更加方便。
(部分资料来自百度百科)
- SciPy 是一个开源的 Python 算法库和数学工具包。
它包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。 - Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。
ndarray属性:
- ndim属性,表示维度个数;
- shape属性,表示各维度大小;
- dtype属性,表示数据类型。
创建ndarray数组函数:
文章图片
函数类型
代码示例:
- numpy和python中的数组类型不同
文章图片
示例1
文章图片
示例2 3.使用zero/ones/empty创建数组:
文章图片
示例3 4.使用arrange生成连续元素:
文章图片
示例4 四.指定ndarray数组元素的类型 NumPy数据类型:
文章图片
数据类型 1.生成指定元素类型的数组:设置dtype属性:
文章图片
示例1 2.使用astype复制数组,并转换类型:
文章图片
示例2 3.将字符串元素转换为数值元素:
文章图片
示例3 4.使用其他数组的数据类型作为参数:
文章图片
示例4 五.ndarray的矢量化计算 矢量运算:相同大小的数组键间的运算应用在元素上
矢量和标量运算:“广播”— 将标量“广播”到各个元素
代码示例:
ndarray数组与标量/数组的运算:
文章图片
示例 六.ndarray数组的基本索引和切片 一维数组的索引:与Python的列表索引功能相似
多维数组的索引:
- arr[r1:r2, c1:c2]
- arr[1,1] 等价 arr[1][1]
- [:] 代表某个维度的数据
代码示例:
文章图片
示例1
文章图片
示例2
示例2和示例3这两个例子就关系到深拷贝和浅拷贝问题,等以后会单独总结一章
浅拷贝后你所进行的操作会影响到之前的数组,深拷贝则不会影响
文章图片
示例3 2.ndarray的切片:
文章图片
示例1
文章图片
示例2 七.ndarray数组的布尔索引和花式索引 布尔索引:使用布尔数组作为索引。arr[condition],condition为一个条件/多个条件组成的布尔数组。
布尔型索引代码示例:
1.ndarray的布尔型索引:
文章图片
示例1 2.ndarray的花式索引:使用整型数组作为索引: 花式索引:使用整型数组作为索引。
花式索引代码示例:
文章图片
示例2 八.ndarray数组的转置和轴对换 数组的转置/轴对换只会返回源数据的一个视图,不会对源数据进行修改。
代码示例:
ndarray数组的转置和轴对换:
文章图片
示例
文章图片
结果 九.ndarray通用函数 通用函数(ufunc)是一种对ndarray中的数据执行元素级运算的函数。
一元ufunc:
一元ufunc代码示例:
1.一元ufunc示例:
文章图片
示例1 2.二元ufunc示例:
文章图片
二元
文章图片
示例2 十.NumPy的where函数使用 np.where(condition, x, y),第一个参数为一个布尔数组,第二个参数和第三个参数可以是标量也可以是数组。
代码示例:
1.where函数的使用:
文章图片
示例1 2.where函数的嵌套使用:
文章图片
示例2 十一.ndarray常用的统计方法 可以通过这些基本统计方法对整个数组/某个轴的数据进行统计计算
文章图片
方法 1.numpy的基本统计方法:
文章图片
示例1
用于布尔数组的统计方法:
- sum : 统计数组/数组某一维度中的True的个数
- any: 统计数组/数组某一维度中是否存在一个/多个True
- all:统计数组/数组某一维度中是否都是True
文章图片
示例2
any(0)中的布尔值对应一列元素相或的值(如果是对应第一行,则test3.any(0)的结果应该为array([ False, True, True], dtype=bool)),any(1)中的布尔值对应每行元素的或值,any()为所有元素相或的值。
axis=0, 表示列一维度上操作。
axis=1, 表示行二维度上操作。
使用sort对数组/数组某一维度进行就地排序(会修改数组本身)
代码示例:
3.sort的就地排序:
文章图片
示例3 十二.ndarray数组的去重以及集合运算
文章图片
方法
代码示例:(方法返回类型为一维数组(1d))
ndarray的唯一化和集合运算:
文章图片
示例 十三.numpy中的线性代数 【Python—numpy的基本使用(机器学习基础)】import numpy.linalg 模块。线性代数(linear algebra)
常用的numpy.linalg模块函数
文章图片
函数
代码示例:
线性代数:
文章图片
示例 十四.numpy中的随机数生成 import numpy.random模块。
常用的numpy.random模块函数:
文章图片
函数
代码示例:
numpy.random随机数生成:
文章图片
示例 十五.ndarray数组重塑 代码示例:
ndarray数组重塑:
文章图片
示例1
文章图片
示例2 十六.ndarray数组的拆分与合并
文章图片
类型
代码示例:
文章图片
示例
文章图片
结果1
文章图片
结果2 十七.数组的元素重复操作 代码示例:
数组的元素重复操作:
文章图片
示例
(此文章仅作为个人学习笔记使用,如有错误欢迎指正~)
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- 取名——兰
- python学习之|python学习之 实现QQ自动发送消息
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议