Python数据分析学习笔记三

来源:互联网 发布:淘宝二加一正品 编辑:程序博客网 时间:2024/03/29 20:36

NumPy初识(3)


5、数组分割:

跟数组组合一样,数组也可以进行分割,可以进行水平分割、垂直分割和深度分割,会用到hsplit、vsplit、dsplit以及split等,可以将数组分割成为相同大小的子数组,也可以进行指定位置的分割

水平分割(hsplit):

所谓数组分割,如果将数组比喻为一整块蛋糕的话,那么就是拿一把刀将蛋糕分割成为几部分,而水平分割中的水平,不是指的是下刀的方向,而是两刀之间的方向是水平的,也就是将数组按照列进行分割,例:

import numpy as npa = 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 npa = 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 npa = np.arange(36).reshape(3,3,4)print aprint 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列。
如果实在不理解,那么可以想象成为将几片面包摞在一起进行切条。

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 qq密码忘记了怎么办手机绑定没有 我的扣扣怎么申诉都找不回来怎么办 装修装的不好又没有签合同怎么办 日本免税的零食不小心拆了怎么办 闲鱼同意买家退货了买家不退怎么办 手机里淘宝钱付了不发货怎么办 百度云下载手机储存空间不足怎么办 苹果8的照片储存空间满了怎么办 为什么下载的软件已停止运行怎么办 苹果手机刷机忘记注册邮箱了怎么办 刺激战场模拟器注册已达上限怎么办 用模拟器玩刺激战场注册上限怎么办 微信解除实名认证后退款怎么办 苹果为什么qq收消息有延迟怎么办 qq忘记密码手机号也换了怎么办 扣扣空间圈人时照片服务错误怎么办 删了qq好友怎么找回来怎么办 苹果5s语音控制打开了怎么办 lv迷你水桶包肩带长了怎么办 在香港买个lv包包过海关怎么办 国际快递手表被海关查应该怎么办 把档案放到人才市场后报到证怎么办 皮表带带久了有异味怎么办 英语中用词不当和拼写错误怎么办 爬楼梯的购物车车轮坏了怎么办? 帮别人买东西不给我钱怎么办 老师念错名字有同学指出来你怎么办 老公婚前买的房子婆婆想霸占怎么办 我想查我的基金收益情况怎么办 儿童票买好了但大人退票了怎么办 没有享受到国家政策的农民怎么办? 股票涨了没抛然后一直跌怎么办 苹果手机放久了开不了机怎么办 部门要辞退你你不想走该怎么办 口头说辞职现在又不想走了怎么办 网上买的理财不给退本金怎么办 买东西遇到态度不好的人你会怎么办 app在下载东西时被停用了怎么办 买东西填错地址 但已签收怎么办 网购手机受骗后电话打不通怎么办 淘宝买的东西发错了怎么办