numpy菜鸟教程知识梳理
文章目录
NumPy Ndarray 对象
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
ndarray内部结构说明
numpy.array的参数
- numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
- 相关例子
numpy数据类型
基本数据类型
数据类型对象(dtype)
numpy.dtype的使用
numpy.dtype(object, align, copy)
使用dtype构造结构体
- 例子
NumPy 数组属性
在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。
NumPy 的数组中比较重要 ndarray 对象属性(维度、秩等)
NumPy 创建数组
numpy.empty
numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组:
numpy.empty(shape, dtype = float, order = 'C')
numpy.zeros
创建指定大小的数组,数组元素以 0 来填充:
numpy.zeros(shape, dtype = float, order = 'C')
numpy.ones
创建指定形状的数组,数组元素以 1 来填充:
numpy.ones(shape, dtype = None, order = 'C')
NumPy 从已有的数组创建数组
numpy.asarray
numpy.frombuffer
numpy.fromiter
NumPy 从数值范围创建数组
numpy.arange
numpy.linspace
numpy.logspace
NumPy 切片和索引
ndarray对象的内容可以通过索引或切片来访问和修改。
ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。
slice例子
冒号:索引
冒号 : 的解释:如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。
多维数组的索引提取方法
省略号…的使用
NumPy 高级索引
整数数组索引
布尔索引
我们可以通过一个布尔数组来索引目标数组。
布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。
花式索引
NumPy 广播(Broadcast)
当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。
NumPy 迭代数组
使用迭代器来遍历数组元素( nditer)
- 行优先或列优先遍历
修改数组中元素的值
默认使用迭代器时无法修改数组元素,如果修改需要修改迭代器参数。
使用外部循环
迭代器中有flags参数。
广播迭代
如果两个数组是可广播的,nditer 组合对象能够同时迭代它们。 假设数组 a 的维度为 3X4,数组 b 的维度为 1X4 ,则使用以下迭代器(数组 b 被广播到 a 的大小)。见例子。
Numpy 数组操作
修改数组形状
翻转数组
修改数组维度
连接数组
分割数组
数组元素的添加与删除
NumPy 位运算
相关函数
NumPy 字符串函数
以下函数用于对 dtype 为 numpy.string_ 或 numpy.unicode_ 的数组执行向量化字符串操作。它们基于 Python 内置库中的标准字符串函数。这些函数在字符数组类(numpy.char)中定义。
NumPy 数学函数
NumPy 包含大量的各种数学运算的函数,包括三角函数,算术运算的函数,复数处理函数等。
三角函数(sin、cos、tan、arcsin、arccos、arctan、degrees)
numpy.degrees将弧度转换为角度
舍入函数
numpy.around()
返回指定数字的四舍五入值。
numpy.floor()
返回小于或者等于指定表达式的最大整数,即向下取整。
numpy.ceil()
返回大于或者等于指定表达式的最小整数,即向上取整。
NumPy 算术函数
加减乘除
需要注意的是数组必须具有相同的形状或符合数组广播规则。
add()
subtract()
multiply()
divide()
其它
numpy.reciprocal()
返回参数逐元素的倒数。如 1/4 倒数为 4/1。
numpy.power()
将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。
numpy.mod()
计算输入数组中相应元素的相除后的余数。 函数 numpy.remainder() 也产生相同的结果。
NumPy 统计函数
numpy.amin() 和 numpy.amax()
numpy.amin() 用于计算数组中的元素沿指定轴的最小值。
numpy.amax() 用于计算数组中的元素沿指定轴的最大值。
numpy.ptp()
计算数组中元素最大值与最小值的差(最大值 - 最小值)。
numpy.percentile()
百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。
numpy.median()
用于计算数组 a 中元素的中位数(中值)
numpy.mean()
返回数组中元素的算术平均值。 如果提供了轴,则沿其计算。
numpy.average()
可以使用加权平均值。
标准差 numpy.std()
方差 numpy.var()
NumPy 排序、条件刷选函数
numpy.sort()
numpy.argsort()
返回的是数组值从小到大的索引值。
numpy.lexsort()
msort、sort_complex、partition、argpartition
numpy.argmax() 和 numpy.argmin()
numpy.argmax() 和 numpy.argmin()函数分别沿给定轴返回最大和最小元素的索引。
numpy.nonzero()
返回输入数组中非零元素的索引。
numpy.where()
返回输入数组中满足给定条件的元素的索引。
numpy.extract()
根据某个条件从数组中抽取元素,返回满条件的元素。
NumPy 字节交换
大端模式和小端模式
numpy.ndarray.byteswap()
numpy.ndarray.byteswap() 函数将 ndarray 中每个元素中的字节进行大小端转换。
NumPy 副本和视图
副本是一个数据的完整的拷贝,如果我们对副本进行修改,它不会影响到原始数据,物理内存不在同一位置。
视图是数据的一个别称或引用,通过该别称或引用亦便可访问、操作原有数据,但原有数据不会产生拷贝。如果我们对视图进行修改,它会影响到原始数据,物理内存在同一位置。
无复制
直接赋值,a = b,则b值更改,a值也更改
ndarray.view() (视图或浅拷贝)
ndarray.view() 方会创建一个新的数组对象,该方法创建的新数组的维数更改不会更改原始数据的维数。
使用切片创建视图修改数据会影响到原始数组:
ndarray.copy()(副本或深拷贝)
ndarray.copy() 函数创建一个副本。 对副本数据进行修改,不会影响到原始数据,它们物理内存不在同一位置
NumPy 矩阵库(Matrix)
NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。
matlib.empty()
创建一个新的初始化后的矩阵
numpy.matlib.zeros()
创建一个以0填充的矩阵
numpy.matlib.ones()
创建一个以1填充的矩阵
numpy.matlib.eye()
numpy.matlib.eye() 函数返回一个矩阵,对角线元素为 1,其他位置为零。
numpy.matlib.identity()
numpy.matlib.identity() 函数返回给定大小的单位矩阵。
numpy.matlib.rand()
numpy.matlib.rand() 函数创建一个给定大小的矩阵,数据是随机填充的。
矩阵和ndarray对象的转换
numpy.asarray()
numpy.asmatrix()
NumPy 线性代数
NumPy 提供了线性代数函数库 linalg,该库包含了线性代数所需的所有功能,可以看看下面的说明:
numpy.dot()
数组或矩阵的点积
numpy.vdot()
两个向量的点积
numpy.inner()
内积
numpy.matmul
矩阵相乘
numpy.linalg.det()
numpy.linalg.det() 函数计算输入矩阵的行列式。
numpy.linalg.solve()
numpy.linalg.solve() 函数给出了矩阵形式的线性方程的解。
numpy.linalg.inv()
numpy.linalg.inv() 函数计算矩阵的乘法逆矩阵。
NumPy IO
常用的IO函数
- load() 和 save() 函数是读写文件数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 .npy 的文件中。
- savze() 函数用于将多个数组写入文件,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 .npz 的文件中。
- loadtxt() 和 savetxt() 函数处理正常的文本文件(.txt 等)