从零开始学Python【4】--numpy
前面3期介绍完Python的基础知识后,我们需要进入数据分析领域的Python实现,首先我们从Numpy模块讲起。该模块主要有这几个功能:数学领域的线性代数、傅里叶变换;统计学领域的统计计算、随机数生成等。这里我们就针对统计里面的计算和随机数生成作讲解。
使用numpy构建矩阵
数组的创建可以使用numpy模块中的array函数实现,一维数组只需要给array函数传入一个列表或元组,二维数组则是传入嵌套的列表或元组。具体举例可知:
arr1和arr2为一维数组,arr3为二维数组,返回一个数组的行数和列数可使用shape方法,即
元素的获取
使用索引的方式,查询一维数组和二维数组的元素。一维数组的索引与列表、元组的索引完全一致,这里就不在赘述;二维数组的索引就稍微有点复杂,我们可以通过例子来说明:
print函数中的'\n',目的用来换行,使打印出来的结果不显得那么拥挤。
咦?报告,你最后一个返回的结果错了,你不是要返回由第一行、第三行、第三列和第四列组成的2×2矩阵吗?为什么是一个1×2的一维数组?如果像上面红框中使用索引的话,将获取【0,2】和【2,3】对应的两个值。那该如何返回想要的2×2的矩阵呢?我们可以这样写:
数学函数
# 取绝对值
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函数的应用:
随机数生成
numpy模块中的子模块random提供了很多产生随机数的方法,帮我们产生伪数据带来了极大的方便,这里就介绍几种常用的分布随机数。有时候为了使每次产生的随机数都相同,就需要设置固定的随机种子,设置随机种子可以调用seed函数实现。
离散分布
二项分布:在概率论和统计学中,二项分布是n个独立的是/非试验中成功的次数的离散概率分布,其中每次试验的成功概率为p。
size参数可以用来控制生成的随机数的形状,r1就是一个10个长度的一维数组;r2就是一个3×5的矩阵。
泊松分布:该分布适合于描述单位时间(或空间)内随机事件发生的次数。如某一服务设施在一定时间内到达的人数,电话交换机接到呼叫的次数,汽车站台的候客人数,机器出现的故障数。
生成3列泊松分布的数据,lamda参数分别取10,50,20,表示单位时间内某件事发生的频次。
连续分布
正态分布:该分布也成高斯分布,呈现两头低,中间高,左右对称的倒钟形状,是连续分布中使用最频繁的一种分布。
其他常用分布:
数据加载
numpy模块还提供了读取数据与写数据的函数,方便我们将外部数据文件读入到Python的工作环境中。这里推荐两个读数据的函数:
fname:指定外部文件的路径
delimiter:指定文件中数据列的分隔符
skiprows:指定读数时跳过的行数
skip_header:指定跳过首行
usecols:指定读取的数据列
这里个人比较推荐使用genfromtxt函数进行外部数据的读取。切记,loadtxt函数和genfromtxt函数读入数据形成数组,故必须要求读进来的数据一定是数值型数据,否则会报错。
数据写出
通过使用numpy模块中的savetxt函数实现python数据的写出,函数语法如下:
fname:指定数据写出的路径
X:指定需要写出的数据
fmt:指定输出数据的格式,默认科学计算法
delimiter:指定数据列之间的分隔符,默认空格符
newline:指定新行的标识符,默认换行
header:指定输出数据首行值
footer:指定输出数据的末行值
comments:指定注释符,默认“#”
今天我们的内容就介绍到这边,欢迎大家拍砖。下期我们来聊聊Python数据框操作--pandas。
从零开始学Python系列:
每天进步一点点2015
学习与分享,取长补短,关注小号!
长按识别二维码 马上关注