1. 首页
  2. 数据分析

从零开始学Python –numpy

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


使用numpy构建矩阵

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

从零开始学Python --numpy

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

从零开始学Python --numpy


元素的获取

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

从零开始学Python --numpy

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

从零开始学Python --numpy

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

从零开始学Python --numpy


数学函数

# 取绝对值

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函数的应用:

从零开始学Python --numpy

随机数生成

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


离散分布

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

从零开始学Python --numpy

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


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

从零开始学Python --numpy

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


连续分布

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

从零开始学Python --numpy

其他常用分布:

从零开始学Python --numpy


数据加载

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

从零开始学Python --numpy

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系列:

从零开始学Python–数据类型及结构

从零开始学Python–数值计算及正则表达式

从零开始学Python–控制流与自定义函数



原文始发于微信公众号(PPV课数据科学社区):从零开始学Python –numpy

原创文章,作者:ppvke,如若转载,请注明出处:http://www.ppvke.com/archives/177

联系我们

4000-51-9191

在线咨询:点击这里给我发消息

工作时间:周一至周五,9:30-18:30,节假日休息