Python Numpy进阶
来源:互联网 发布:什么是java可变参数 编辑:程序博客网 时间:2024/06/05 02:41
Python Numpy进阶
环境:python3.5
推荐两本书:《线性代数》、《利用python进行数据分析》
需要的库:
matplotlib快速绘图
scipy
numpy
对于大部分数据分析应用而言,最常用我最关注的功能集中在:
用于数据整理和清理、子集构造和过滤、转换等快速的矢量化数组运算。
常用的数组算法,如排序、唯一化、集合运算等。
高效的描述统计和数据聚合/摘要运算。
用于异构数据集的合并/链接运算的数据对齐和关系型数据运算。
将条件逻辑表述为数组表达式(而不是带有if-elif-else分支的循环)。
数据的分组运算(聚合、转换、函数应用等)。
Numpy则提供了上述功能的计算基础。
基础篇
Np入门
进阶篇
进阶本质上就是对基础功能的实用化,讲起来比较琐碎。
数据处理
Numpy数组使你可以将许多种数据处理任务表述为简洁的数组表达式(否则需要编写循环)。用数组表达式代替循环的做法,通常被称为矢量化。一般来说,矢量化数组运算比等价的纯python方式快上一两个数量级(甚至更多),尤其是各种数值运算。
比如说:
一、 条件逻辑
numpy.where在三元条件表达式if condition else y的矢量化版本。假设我们有一个布尔数组和两个值数组:
#举例:xarr=np.array([1.1,1.2,1.3,1.4,1.5])yarr=np.array([2.1,2.2,2.3,2.4,2.5])zarr=np.array([True,False,True,True,False])result=[(x if c else y)for x,y,c in zip(xarr,yarr,zarr)]print(result)result=np.where(zarr,xarr,yarr)print(result)
#结果:[1.1000000000000001, 2.2000000000000002, 1.3,1.3999999999999999, 2.5][ 1.1 2.2 1.3 1.4 2.5 ]
从结果看,两者结果一致。
从使用角度看,np.where更简单,从而能引申出更复杂的逻辑。 np.where(cond1%cond2,0,np.where(cond1,1,np.where(cond2,2,1)))
从性能角度看,纯python循环对大数据处理速度不是很快,且无法用于多维数组。np.where则可以实现。
二、数学统计
- arr.sum
- arr.mean
- arr.std
- arr.min
- arr.cumprod 所有元素的累计积!特别有用!
三、排序、唯一化以及其他的集合逻辑
#排序arr=np.array(...)arr.sort()
#唯一化等集合逻辑np.unique(arr) #计算x中的唯一元素,并返回有序结果np.intersect1d(x,y) #计算x和y中的公共元素,并返回有序结果np.union1d(x,y) #计算x和y中的并集,并返回有序结果np.setdiff1d(x,y) #计算集合的差
四、用于数组的文件输入输出
一般情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中的。
arr=np.arange(10)np.save('arrar',arr)brr=np.load('arrar.npy')
五、线性代数
线性代数(如矩阵乘法、矩阵分解、行列式以及其方阵数学等)是任何数组库的重要组成部分。
diag #求取对角线元素dot #矩阵乘法trace #对角线元素和==sum(diag(arr))det #行列式inv #矩阵逆solve #解线性方程 Ax=b
六、随机函数
对于np.random模块对Python内置的random进行了补充,增加了一些用于高效生成多种概率分布的样本值的函数。我想举个例子:
#随机漫步nsteps=1000draws=np.random.randint(0,2,size=nsteps)steps=np.where(draws>0,1,-1)walk=steps.cumsum()plt.plot(np.arange(start=0,stop=1000,step=1),walk)plt.show()
总结
笔者介绍了在numpy基础上的一些进阶功能,还有很多需要读者去挖掘。数据分析更有用更有趣的方法还属后续的pandas,pandas是基于Numpy构建的,让Numpy为中心的应用变得更加简单。
如果您看到这篇文章有收获或者有不同的意见,欢迎点赞或者评论。python群:190341254丁。
- Python Numpy进阶
- 【Python】NumPy的详细教程(进阶篇)
- 「机器学习」Python数据分析之Numpy进阶
- Numpy学习(进阶)
- Python Numpy
- [python]numpy
- python numpy
- Python Numpy
- python numpy
- python ---numpy
- Python---Numpy
- Python--numpy
- Python Numpy
- python numpy
- python numpy
- Python numpy
- Python-numpy
- python-numpy
- ios面试题收录
- 导航条
- JavaScript学习(一)将实例状态存储在实例对象中,方法存储在原型中
- AIDL简介
- js获取url地址方法
- Python Numpy进阶
- WDCP安装redis
- CharacterEncodingFilter 过滤器的理解和配置
- Struts2 中的值栈的理解
- CMDeviceMotion Written by Nate Cook (译)
- 推荐几个计算机常用的笔试面试题网站
- spring4.0特性
- junit @Test
- 支持向量机SVM