Python数据分析学习笔记三
2016-04-27 13:16
357 查看
NumPy初识(3)
5、数组分割:跟数组组合一样,数组也可以进行分割,可以进行水平分割、垂直分割和深度分割,会用到hsplit、vsplit、dsplit以及split等,可以将数组分割成为相同大小的子数组,也可以进行指定位置的分割
水平分割(hsplit):
所谓数组分割,如果将数组比喻为一整块蛋糕的话,那么就是拿一把刀将蛋糕分割成为几部分,而水平分割中的水平,不是指的是下刀的方向,而是两刀之间的方向是水平的,也就是将数组按照列进行分割,例:import numpy as np a = np.arange(12).reshape(3,4) print np.hsplit(a,4)
输出结果:
[ array([[0],[4],[8]]), array([[1],[5],[9]]), array([[ 2],[ 6],[10]]), array([[ 3],[ 7],[11]]) ]
对于三行四列的数组,按照水平分割,会将各列的数值取出做成一个数组,最终得到四个有3个长度的数组;
对于同一个数组,调用split函数并且指定axis=1,也可以做到与水平分割一致的效果。
垂直分割(vsplit):
对于垂直分割,与水平分割恰恰相反,还是按照之前蛋糕的例子,所谓垂直分割,也是指的两次下刀之间的方向按照垂直的方向,显然我们在分蛋糕的时候不能这么做,否则很容易被打,还是看例子:
import numpy as np a = np.arange(12).reshape(3,4) print np.vsplit(a,3)
输出结果:
[ array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]]) ]
从结果可以很明显的看出,原本三行四列的二维数组,每一行被抽取出来做成了一个新的数组,一共得到了三个新的数组,跟原来的行数一致。
当然,同样的功能,我们还可以使用split函数实现,不过这里要设置axis=0;
深度分割(dsplit):
与深度组合一致,深度分割也是按照深度将数组进行分割,当然,首先我们要有一个三维数组:import numpy as np a = np.arange(36).reshape(3,3,4) print a print np.dsplit(a,4)
输出结果:
[[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]] [[24 25 26 27] [28 29 30 31] [32 33 34 35]]] [ array([[[ 0], [ 4], [ 8]], [[12], [16], [20]], [[24], [28], [32]]]), array([[[ 1], [ 5], [ 9]], [[13], [17], [21]], [[25], [29], [33]]]), array([[[ 2], [ 6], [10]], [[14], [18], [22]], [[26], [30], [34]]]), array([[[ 3], [ 7], [11]], [[15], [19], [23]], [[27], [31], [35]]])]
深度分割这个有一些难理解,在上例中我们创建了一个3行4列深度为3的三维数组,首先需要了解的是在reshape(3,3,4)中,第一个3代表的是数组的深度,第二个3代表的是行数,第三个4代表的是列数。然后另外需要注意的是,在dsplit函数中我们传入的是列数,这样以来就可以这样理解了:首先我们还是按照之前的惯例,沿着深度的方向进行切割,这样我们就会得到3个三行四列的二维数组,可以想成是面,然后想象将这3个二维数组摞在一起,沿着列的方向进行切割,这样我们每一次切割就会在一个面上得到了3个只有一个元素的一维数组。
在每一个面上将这个面中得到的三个一维数组放到一起,就得到了一个三行一列的二维数组,将之前得到的三个面上各自组成的二维数组组合,就得到了一个深度为3的三维数组,依此类推,我们就会得到最终的结果,4个深度为三的三维数组,每一个三维数组中有3个二维数组,每一个二维数组为三行1列。
如果实在不理解,那么可以想象成为将几片面包摞在一起进行切条。
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法