python日记Day12——numpy速查中文手册

python日记——numpy速查中文手册

python数据分析与展示主要涉及Numpy、matplotlib、pandas三个库,本文将从Numpy开始,逐步介绍python进行数据分析与展示的相关知识,从而掌握表示、清洗、统计和展示数据的能力。
一、Numpy简介

  • Numpy是表达N维数组的最基础库,python接口使用,底层通过c语言实现,计算速度优异,它是python数据分析及科学计算的基础库,支撑pandas库,同时还提供直接的矩阵运算、广播函数、线性代数等功能。

二、ndarray数组对象

  • ndarray的优势
    1、数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据;
    2、设置专门的数组对象,经过优化,可以提升这类应用的运算速度;
    3、数组对象采用相同的数据类型,有利于节省运算和存储空间

  • ndarray基本介绍
    1、ndarray是一个多维数组对象,由实际的数据、描述这些数据的元数据(数据维度、数据类型等)两部分构成;
    2、ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始
    3、numpy.array()用于生成一个ndarray数组,其输出为[ ]形式,输出的数组元素之间由空格分隔;
    4、轴和秩:轴用于保存数据的维度,秩用于表示轴的数量;
    5、ndarray对象的属性
    .ndim:秩,即轴的数量或维度的数量;
    .shape:ndarray对象的尺度,对于矩阵,表示n行m列;
    .size:ndarray对象元素的个数,相当于.shape中n*m的值;
    .dtype:ndarray对象的元素类型;
    .itemsize:ndarray对象中每个元素的大小,以字节为单位。
    6、ndarray的元素类型
    ndarray元素类型很多,主要是因为科学计算涉及数据较多,对存储和性能都有较高要求,并且对元素类型精确定义,有助于Numpy合理使用存储空间并优化性能,有助于程序员对程序规模有合理评估,其元素类型如下:bool、inte、intp、int8、int16、int32、int64、uint8、uint16、uint32、uint64、float16、float32、float64、complex64、complex128;
    7、ndarray数组可以由非同质对象构成,但无法有效发挥Numpy优势,应该尽量避免使用,如果不是同一类型,数组元素会自动地向下进行转换:
    python日记Day12——numpy速查中文手册_第1张图片

  • ndarray数组的创建和变换
    1、ndarray数组的创建方法:
    (1) 从python中的列表、元组等类型创建:x = np.array(list/tuple)
    (2) 使用Numpy中函数创建ndarray数组:
    numpy.arange(n):类似range函数,返回ndarray类型,元素从0到n-1;
    numpy.ones(shape):根据shape生成一个全1数组,shape是元组类型;
    numpy.zeros(shape):根据shape生成一个全0数组。shape是元组类型
    numpy.full(shape,val):根据shape生成一个数组,每个元素值都是val;
    numpy.eye(n):创建一个正方的n*n单位矩阵,对角线为1,其余为0;
    numpy.ones_like(a):根据数组a的形状生成一个全1数组;
    numpy.zeros_like(a):根据数组a的形状生成一个全0数组;
    numpy.full_like(a,val):根据数组a的形状生成一个全val数组;
    numpy.linspace(a,b,size,endpoint=True/False):根据起止数据a,b等间距地填充size个数据,形成数组,endpoint=False时表示不包含b;
    numpy.concatenate():将两个或多个数组合并成一个新的数组。
    (3)创建ndarray时,可以指定其类型:
    在这里插入图片描述
    (4) ndarray可通过“=”进行直接复制(相当于两个指针指向同一位置),也可以.copy()进行复制(生成一个副本)。
    2、ndarray数组的变换:
    (1) 维度变换:
    .reshape(shape):不改变数组元素,返回一个shape形状的数组,原数组不变;
    .resize(shape):与.reshape()功能一致,但修改原数组;
    .swapaxes(ax1,ax2):将数组n个维度中两个维度进行调换;
    .flatten():对数组进行降维,返回折叠后的一维数组,原数组不变。
    (2) 元素类型变换 :
    .astype(new_type):不会改变原始数组结构,创建一个新的数组(原始数据的一个拷贝)。
    np.asarray():不会改变原始数组结构:
    在这里插入图片描述
    (3)ndarray数组向列表转换: .tolist()

  • ndarray数组的操作
    1、数组的索引和切片:
    (1)一维数组:与python中列表相似;
    (2)多维数组:
    索引:a[1,2,3]、a[-1,-2,-3];
    切片:a[:,1:3,::2],三维为例,2表示步长。
    python日记Day12——numpy速查中文手册_第2张图片
    2、ndarray数组的运算:
    (1) 数组与标量之间的运算:作用于数组的每一个元素;
    (2) numpy一元函数,对ndarray中的数据执行元素级运算的函数:
    numpy.abs(x),numpy.fabs(x):计算数组各元素的绝对值;
    numpy.sqrt(x):计算数组各元素的平方根;
    numpy.square(x):计算数组各元素的平方;
    numpy.log(x),numpy.log10(x),numpy.log2(x):计算各元素的对数;
    numpy.ceil(x),numpy.floor(x):计算数组各元素的ceiling值或floor值;
    numpy.rint(x):计算数组各元素的四舍五入值;
    numpy.modf(x):将数组各元素的小数和整数部分以两个独立数组形式返回;
    numpy.cos(x)等:计算三角函数值;
    numpy.exp(x):计算数组各元素的指数值;
    numpy.sign(x):计算数组各元素的符号值,1(+),0,-1(-)。
    (3) numpy二元函数:
    numpy.maxmun(x,y)、numpy.minmun(x,y)、numpy.fmax()、numpy.fmin()、numpy.mod(x,y)、numpy.copysign(x,y)—将数组y中各元素值的符号赋值给数组x对应元素、numpy.multiply(),numpy.dot()——矩阵乘法(维度一致)、加减乘除、算术比较。
    (4) 数值运算,可指定轴(axis):
    .sum(),.prod()(累乘),.min(),.max(),
    .mean(),.std(),.var(),
    .round(decimals=1精度)(四舍五入),
    .argmin()(最小值的索引),.argmax()
    在这里插入图片描述
    python日记Day12——numpy速查中文手册_第3张图片
    (5)np.where()
    python日记Day12——numpy速查中文手册_第4张图片

  • numpy常用功能模块
    1、random模块操作
    (1) numpy.random.uniform(low=0.0, high=1.0, size=None):
    生成size个符合均分布的浮点数,取值范围为[low, high),默认取值范围为[0, 1.0)
    (2) numpy.random.rand(d0, d1, …, dn):
    生成一个(d0, d1, …, dn)维的数组,数组的元素取自[0, 1)上的均分布,若没有参数输入,则生成一个数
    (3) numpy.random.randint(low, high=None, size=None, dtype=‘I’):
    生成size个整数,取值区间为[low, high),若没有输入参数high则取值区间为[0, low)
    (4) numpy.random.random_integers(low, high=None, size=None):
    生成size个整数,取值区间为[low, high], 若没有输入参数high则取值区间为[1, low]
    (5) numpy.random.random(size=None):
    产生[0.0, 1.0)之间的浮点数
    (6)numpy.random.normal(mua,sigma,size):
    生成size个均值为mua,标准差为sigma的高斯分布的概率密度随机数
    (7)numpy.random.shuffle():
    对numpy的数组进行重新随机排序,如果是多维数组,按照第一维进行随机排序
    (8)numpy.random.seed():
    指定随机数种子,随机策略相同,无论执行多少次随即操作,结果都相同
    2、排序操作
    (1)np.sort():
    python日记Day12——numpy速查中文手册_第5张图片
    (2)np.argsort():用元素的索引位置替代排序后的实际结果
    在这里插入图片描述在这里插入图片描述
    (3)np.searchsorted():查找一个合适的位置,将元素插入已排好序的一维数组中,并且保持数组元素的顺序不被打乱
    在这里插入图片描述

本文部分内容参考于北京理工大学嵩天老师相关课程

你可能感兴趣的:(Python笔记)