美文网首页Numpy我爱编程
从零开始学Python数据分析【4】-- numpy

从零开始学Python数据分析【4】-- numpy

作者: 04282aba96e3 | 来源:发表于2018-01-23 09:30 被阅读103次

    前文传送门:

    从零开始学Python数据分析【1】--数据类型及结构

    从零开始学Python数据分析【2】-- 数值计算及正则表达式

    从零开始学Python数据分析【3】-- 控制流与自定义函数

    前面3期介绍完Python的基础知识后,我们需要进入数据分析领域的Python实现,首先我们从Numpy模块讲起。该模块主要有这几个功能:数学领域的线性代数、傅里叶变换;统计学领域的统计计算、随机数生成等。这里我们就针对统计里面的计算和随机数生成作讲解。

    使用numpy构建矩阵

    数组的创建可以使用numpy模块中的array函数实现,一维数组只需要给array函数传入一个列表或元组,二维数组则是传入嵌套的列表或元组。具体举例可知:

    image

    arr1和arr2为一维数组,arr3为二维数组,返回一个数组的行数和列数可使用shape方法,即

    image

    元素的获取

    使用索引的方式,查询一维数组和二维数组的元素。一维数组的索引与列表、元组的索引完全一致,这里就不在赘述;二维数组的索引就稍微有点复杂,我们可以通过例子来说明:

    image.gif

    print函数中的'\n',目的用来换行,使打印出来的结果不显得那么拥挤。

    image.gif

    咦?报告,你最后一个返回的结果错了,你不是要返回由第一行、第三行、第三列和第四列组成的2×2矩阵吗?为什么是一个1×2的一维数组?如果像上面红框中使用索引的话,将获取【0,2】和【2,3】对应的两个值。那该如何返回想要的2×2的矩阵呢?我们可以这样写:

    image.gif

    数学函数

    取绝对值

    np.abs

    np.fabs

    算术平方根

    np.sqrt

    平方

    np.square

    指数

    np.exp

    对数

    np.log2

    np.log10

    np.log(x,base)

    符号函数(大于0的数返回1、小于0的数返回-1、0返回0值)

    np.sign

    向上取整

    np.cell

    向下取整

    np.floor

    返回最近的整数

    np.rint

    判断是否缺失

    np.isnan

    判断是否有限

    np.isfinite

    判断是否无限

    np.isinf

    幂运算

    np.power

    余数

    np.mod

    统计函数

    最大值

    np.max

    浮点型的最大值

    np.fmax

    最小值

    np.mim

    浮点型的最小值

    np.fmin

    求和

    np.sum

    均值

    np.mean

    标准差

    np.std

    方差

    np.var

    中位数

    np.median

    映射函数

    apply_along_axis

    apply_along_axis函数与R语言中的apply函数用法一致,可以针对某个轴的方向进行函数操作,同样,而且在pandas模块中的DataFrmae对象中,可以使用apply函数达到相同的效果。我们举一个例子来说明一下apply_along_axis函数的应用:

    image

    随机数生成

    numpy模块中的子模块random提供了很多产生随机数的方法,帮我们产生伪数据带来了极大的方便,这里就介绍几种常用的分布随机数。有时候为了使每次产生的随机数都相同,就需要设置固定的随机种子,设置随机种子可以调用seed函数实现。

    离散分布

    二项分布:在概率论和统计学中,二项分布是n个独立的是/非试验中成功的次数的离散概率分布,其中每次试验的成功概率为p。

    image

    size参数可以用来控制生成的随机数的形状,r1就是一个10个长度的一维数组;r2就是一个3×5的矩阵。

    泊松分布:该分布适合于描述单位时间(或空间)内随机事件发生的次数。如某一服务设施在一定时间内到达的人数,电话交换机接到呼叫的次数,汽车站台的候客人数,机器出现的故障数。

    image

    生成3列泊松分布的数据,lamda参数分别取10,50,20,表示单位时间内某件事发生的频次。

    连续分布

    正态分布:该分布也成高斯分布,呈现两头低,中间高,左右对称的倒钟形状,是连续分布中使用最频繁的一种分布。

    image

    其他常用分布:

    image

    数据加载

    numpy模块还提供了读取数据与写数据的函数,方便我们将外部数据文件读入到Python的工作环境中。这里推荐两个读数据的函数:

    image

    fname:指定外部文件的路径

    delimiter:指定文件中数据列的分隔符

    skiprows:指定读数时跳过的行数

    skip_header:指定跳过首行

    usecols:指定读取的数据列

    这里个人比较推荐使用genfromtxt函数进行外部数据的读取。切记,loadtxt函数和genfromtxt函数读入数据形成数组,故必须要求读进来的数据一定是数值型数据,否则会报错。

    数据写出

    通过使用numpy模块中的savetxt函数实现python数据的写出,函数语法如下:

    np.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ')
    

    fname:指定数据写出的路径

    X:指定需要写出的数据

    fmt:指定输出数据的格式,默认科学计算法

    delimiter:指定数据列之间的分隔符,默认空格符

    newline:指定新行的标识符,默认换行

    header:指定输出数据首行值

    footer:指定输出数据的末行值

    comments:指定注释符,默认“#”

    今天我们的内容就介绍到这边,欢迎大家拍砖。下期我们来聊聊Python数据框操作--pandas。

    相关文章

      网友评论

        本文标题:从零开始学Python数据分析【4】-- numpy

        本文链接:https://www.haomeiwen.com/subject/qywjaxtx.html