从零开始学Python【4】--numpy

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

使用numpy构建矩阵

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

从零开始学Python【4】--numpy

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

从零开始学Python【4】--numpy

元素的获取

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

从零开始学Python【4】--numpy

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

从零开始学Python【4】--numpy

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

从零开始学Python【4】--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【4】--numpy

随机数生成

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

离散分布

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

从零开始学Python【4】--numpy

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

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

从零开始学Python【4】--numpy

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

 

连续分布

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

从零开始学Python【4】--numpy

其他常用分布:

从零开始学Python【4】--numpy

 

数据加载

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

从零开始学Python【4】--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:指定注释符,默认“#”

 

今天我们的内容就介绍到这边,欢迎大家拍砖。读者朋友可以关注我的公众号“lsxxx20111”,学习更多有关数据分析、挖掘、Python的知识点哦。

                                                                          从零开始学Python【4】--numpy