利用Python进行数据分析(四)
来源:互联网 发布:夏令营中的较量 知乎 编辑:程序博客网 时间:2024/05/21 20:26
NumPy基础
数学与统计方法
是的,没错,还是NumPy。我不习惯一直看这种书面文章式的东西,所以前几天看烦了 抽空复习了下爬虫的知识,然后把斗鱼的弹幕爬了下来,并且 基本每一句都附加了很多很详细的注释,github链接如下:
https://github.com/BrainZou/PythonSpider/tree/master/douyudanmu
基本的数组统计方法:
有两种使用:arr.mean或者np.mean(arr)。这里列举两个,注意参数0,1代表轴。仍然还是建议都在Anaconda里面敲上一遍。
用于布尔型数组的方法
在上面这些方法中,布尔值会被强制转换为1(True)和0(False)。因此,sum经常被用来对布尔型数组中的True值计数:
In[160]:arr=randn(100)In[161]:(arr>0).sum() # 正值的数量0ut[161]:44
另外还有两个方法any和a11,它们对布尔型数组非常有用。any用于测试数组中是否存在
一个或多个True,而al1则检查数组中所有值是否都是True:
In [162]:bools=np.array([False,False,True,False])In [163]:bools.any()0ut[163]:TrueIn [164]:bools.al1()0ut[164]:False
这两个方法也能用于非布尔型数组,所有非0元素将会被当做True。
排序
跟Python内置的列表类型一样,NumPy数组也可以通过sort方法就地排序:
arr.sort() arr.sort(1)#(在1轴上排序)
就地排序会改变数组本身。np.sort(arr)则不会。
数组的集合运算
举个栗子:
In [178]:ints=np.array([3,3,3,2,2,1,1,4,4])In[179]:np.unique(ints)0ut[179]:array([1,2,3,4])
等价于
In [180]:sorted(set(names))0ut[180]:['Bob','Joe','Will']
文件输入输出
NumPy能够读写磁盘上的文本数据或二进制数据。后面的章节将会告诉你一些pandas中
用于将表格型数据读取到内存的工具。
将数组以二进制格式保存到磁盘
np.save和np.load 直接将数组以二进制的格式保存在.npy文件中
In[183]:arr=np.arange(10)In [1841]:np.save('some array',arr)
当末尾没有扩展名.npy时会自动加上。然后通过np.load读取磁盘上的数组。
In[185]:np.load('some_array.npy')out[185]:array([o,1,2,3,4,5,6,7,8,9])
通过np.savez可以将多个数组保存到一个压缩文件中,将数组以关键字参数的形式传入
即可:
In [186]:np.savez('array_archive.npz',a=arr,b=arr)
加载.npz文件时,你会得到一个类似字典的对象,该对象会对各个数组进行延迟加载:
In [187]:arch=np.1oad('array_archive.npz')In [188]:arch['b']out[188]:array([o,1,2,3,4,5,6,7,8,9])
存取文本文件
In [192]:arr=np.loadtxt('array_ex.txt',delimiter=',')In [193]:arr0ut[193]:array([[ o.5801,0.1867,1.0407,1.1344],[0.1942,-0.6369,-0.9387,0.1241],[-0.1264,0.2686,-0.6957,0.0474],[-1.4844,0.0042,-0.7442,0.0055],[2.3029,0.2001,1.6702,-1.8811],[-0.1932,1.0472,0.4828,0.9603]])
np.savetxt执行的是相反的操作:将数组写到以某种分隔符隔开的文本文件中。
genfromtxt跟1oadtxt差不多,只不过它面向的是结构化数组和缺失数据处理。
本章只简单介绍使用,后续将详细介绍pandas,DataFrame对象~
线性代数
上一个章节也介绍了*对两个二维数组相乘得到的是一个元素级的积,不是矩阵点积。所以要使用dot函数:
In[196]:x In[197]:y0ut[196]: out[197]:array([[ 1.,2.,3.], array([[ 6.,23.],[4.,5.,6.]]) [-1.,7.], [8.,9.]])In[198]:x.dot(y) #相当于np.dot(x,y)0ut[198]:array([[ 28.,64.], [67.,181.]])
一个二维数组跟一个大小合适的一维数组的矩阵点积运算之后将会得到一个一维数组:
In[199]:np.dot(x,np.ones(3))out[199]:array([6.,15.])#可以把一维数组写成竖状的。
numpy.linalg函数
随机数生成
numpy.random模块对Python内置的random进行了补充,增加了一些用于高效生成多种概率分布的样本值的函数。
numpy.random函数:
而Python内置的random模块则只能一次生成一个样本值。从下面的测试结果中可以看出,如果需要产生大量样本值,numpy.random快了不止一个数量级:
In[210]:from random import normalvariateIn[211]:N = 1000000In[212]:%timeit samples = [normalvariate(0,1)for _ in xrange(N)]1loops,best of 3:1.33s per 1oopIn[213]:%timeit np.random.normal(size=N)10 loops,best of 3:57.7 ms per 1oop
例子:请自行百度随机漫步 并且实现。
总结
NumPy基础到这就介绍完了,其中包含了很多很细致的函数,及巧妙的应用,建议多多使用,之后不熟练时再来看看复习查阅。
- 利用Python进行数据分析(四)
- 利用python进行数据分析(四):数据加载、存储
- 《利用python进行数据分析》学习笔记(四)
- 利用Python进行数据分析(一)
- 利用Python进行数据分析(二)
- 利用Python进行数据分析(三)
- 利用 Python 进行数据分析(十二)pandas:数据合并
- 利用 Python 进行数据分析(十二)pandas:数据合并
- 利用python进行数据分析(五):数据规整化
- 利用python做数据分析(四)-数据合并
- 《利用python进行数据分析》学习笔记(一)
- 利用python进行数据分析(学习笔记)
- 《利用python进行数据分析》学习笔记(一)
- 《利用python进行数据分析》学习笔记(二)
- 《利用python进行数据分析》学习笔记(三)
- 《利用python进行数据分析》学习笔记(六)
- 利用 Python 进行数据分析之IPython (一)
- 利用python进行数据分析(一):ipython
- jsp导出excel 中文搜索后 页面空白 javaweb tomat启动有问题,jetty没问题
- 求助:android studio想卸载了重新安装,如何能卸载干净?
- 【问题解决】 web项目启动不了 org.springframework.beans.factory.BeanCreationException: Could not autowire field:
- 线程与内存关系分析Servlet线程安全性
- 《科研有方——科研需要“想好”再“做”》笔记 Chapter3:英文论文写作
- 利用Python进行数据分析(四)
- linux定时执行R脚本及注意事项
- Fiori2.0-如何把一个view以dialog的形式显示在界面
- [二分 单调队列] Atcoder AGC003 E. Sequential operations on Sequence
- dubbo监控报错
- 【安全牛学习笔记】vega
- 动态规划学习(1)
- JSP三大指令
- BCD码简介及其与十进制数字字符串之间的转换