Numpy 的核心是 ndarray 对象,这个对象封装了同质数据类型的n维数组。(数组,即为有序的元素序列)
numpy约定俗成的导入方式:
import numpy as np
基本的 ndarray 是使用 NumPy 中的数组函数创建的,如下所示:
array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
numpy的ndarray 与 python原生array有什么区别:
NumPy 数组在创建时有固定的大小,不同于Python列表(可以动态增长)。更改ndarray的大小将创建一个新的数组并删除原始数据。
NumPy 数组中的元素都需要具有相同的数据类型,因此在存储器中将具有相同的大小。数组的元素如果也是数组(可以是 Python 的原生 array,也可以是 ndarray)的情况下,则构成了多维数组。
常用数组:np.zeros() #全0数组 默认float型
np.ones() #全1数组 默认float型
np.full(形状,x) #全为相同值的数组
np.eye() #单位矩阵 默认float型
np.ones_like(a)、np.zeros_like(a)、np.full_like(a,x) #按照某一数组的形状生成ndarray
np.empty() #创建一个初始化数组
np.diag() #创建对角矩阵,最后一个参数表示偏移量,正数向右上角偏移,负数向最下角偏移
np.nan #设置空值
np.random.randint() #随机整数
np.random.randn()=np.random.standard_normal() #标准正态分布
np.random.rand() #返回[0,1)之间的数
np.random.normal(均值,标准差,形状)
np.arange()、np.linspace() #创建一个线性序列的数组
数组属性:ndarray.shape #返回一个包含数组维度的元组
ndarray.dtype #返回数组元素的类型
ndarray.ndim #返回数组的维度
ndarray.itemsize #返回数组中每个元素的字节单位长度
数组维度变换:ndarray.reshape #返回调整shape后的数组(不改变原数组)
ndarray.resize #返回调整shape后的数组(改变原数组)
ndarray.swapaxes #返回调换两个维度后的数组
ndarray.flatten #对数组进行降维,返回折叠后的一维数组
数组类型变换:ndarray.astype() #更改数组的类型
ndarray.tolist() #将数组变为列表
基本索引与切片规则:[start:stop:step]
数组拼接:np.vstack=np.row_stack #沿纵轴拼接
np.hstack=np.column_stack #沿横轴拼接
np.concatenate #将数组以某一轴进行拼接,axis需认为设定
数组分割:np.hsplit #纵向进行分割
np.vsplit #横向进行分割
np.array_split #按指定轴进行分割
算数运算:np.add(a,b) #数组的加法
np.subtract(a,b) #数组的减法
np.multiply(a,b) #数组的乘法
np.divide(a,b) #数组的除法
np.reciprocal() #返回参数逐元素的倒数,对于绝对值大于1的整数元素结果始终为0,对于整数0则发出溢出警告
np.exp() #以e为底的指数,np.exp2() #以2为底的指数,np.expm1() #返回np.exp()-1
np.power() #幂函数
np.mod()=np.remainder() #返回数组中相应元素的除法余数
np.around() #返回四舍五入到所需精度的值,decimals表示要舍入的小数位数,默认0,如果为负则四舍五入到小数点左侧
np.floor() #向下取整
np.ceil() #向上取整
含有复数的数组:np.real() #返回复数类型参数的实部
np.imag() #返回参数的虚部
np.conj() #返回通过改变虚部符号而获得的共轭复数
np.angle() #返回复数参数的角度,参数为degree,为true时以角度制表示,否则以弧度制表示
字符串函数:np.char.add() #按元素的字符串连接
np.char.multiply() #多重连接
np.char.center() #返回所需宽度的数组,以便输入字符串位于中心,并使用fillchar在左侧和右侧进行填充
np.char.capitalize() #返回字符串的副本,其中第一个字母大写
np.char.title() #返回输入字符串的按元素标题转换版本,其中每个单词首字母都大写
np.char.lower() #返回数组中元素转换为小写
np.char.upper() #返回数组,其元素转换为大写
np.char.split() #返回输入字符串中的单词列表,默认用空格作分隔符
np.char.splitlines() #返回数组中元素的单词列表,\n \r \r\n都当作换行符处理
np.char.strip() #返回数组副本,其中元素移除了开头或结尾处的特定字符
np.char.join() #返回一个字符串,其中单个字符由特定的分隔符连接
np.char.replace() #返回字符串副本,其中所有字符序列的出现位置都被另一个给定的字符序列取代
统计函数:np.amin() #从给定数组中的元素沿指定轴返回最小值
np.amax() #从给定数组中的元素沿指定轴返回最大值
np.ptp() #返回沿轴的值的极差(最大值-最小值)
np.percentile(数组,百分位数,轴) #返回特定轴的百分位数
np.median() #返回数组中值
np.mean() #返回数组的算术平均值
np.average() #返回数组的加权平均值,不指定权重时=mean,如果returned参数设为true,返回权重的和
np.std() #返回数组的标准差,标准差是与均值的偏差的平方的平均值的平方根。标准差公式如下: std = sqrt(mean((x - x.mean())**2))
np.var() #返回数组的方差,方差是偏差的平方的平均值,即mean((x - x.mean())** 2)
。换句话说,标准差是方差的平方根。
排序、搜索和计数函数:np.sort() #返回输入数组的排序副本
np.argosrt() #函数对输入数组沿给定轴执行间接排序,并使用指定排序类型返回数据的索引数组。这个索引 数组用于构造排序后的数组。
np.lexsort() #函数使用键序列执行间接排序。键可以看作是电子表格中的一列。该函数返回一个索引数组,使用它可以获得排序数据。注意,最后一个键恰好是 sort 的主键。
np.argmax()和np.argmin() #沿给定轴返回最大和最小元素的索引
np.nonzero() #返回输入数组中非零元素的索引
np.where() #返回输入数组中满足给定条件的元素的索引
np.extract() #返回满足任何条件的元素
转置:转置只能发生在二维及以上的维度的数组上生效,一维的数组只有一个维度是 不可以转置的
ndarray.T
唯一化和集合逻辑:np.unique() #去重函数
np.in1d() #验证元素是否在给定序列中
np.intersect1d() #求交集
np.union1d() #求并集
np.setdiff1d() #求差集
矩阵库:import numpy.matlib,此模块的函数返回矩阵而不是返回 ndarray对象
线性代数:np.dot(a,b)=a@b #返回两个数组的点积,对于 N 维数组,它是 a 的最后一个轴上的和与 b 的倒数第二个轴的乘积
np.vdot(a,b) #返回两个向量的点积
np.inner() #返回一维数组的向量内积,对于更高的维度,它返回最后一个轴上的乘积的和
np.matmul() #返回两个数组的矩阵乘积
np.linalg.det() #计算输入矩阵的行列式
np.linalg.solve() #给出矩阵形式的线性方程的解
np.allclose(a,b) #判断两者是否相等
np.linalg.inv() #计算矩阵的逆