注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

Numpy入门(四)——多维数组的堆叠  

2015-12-18 16:02:28|  分类: Python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

堆叠(stack)是把两个数组按照某种方式堆叠构成一种新的数组。注意下面的这些函数,都接受的是元组类型。

hstack/vstackdstack函数

hstack函数能将两个多维数组在水平方向上堆叠,例如:

>>> R=arange(9).reshape(3,3)

>>> S=arange(12).reshape(3,4)

>>> R

array([[0, 1, 2],

       [3, 4, 5],

       [6, 7, 8]])

>>> S

array([[ 0,  1,  2,  3],

       [ 4,  5,  6,  7],

       [ 8,  9, 10, 11]])

>>> T=hstack((R,S))

>>> T

array([[ 0,  1,  2,  0,  1,  2,  3],

       [ 3,  4,  5,  4,  5,  6,  7],

       [ 6,  7,  8,  8,  9, 10, 11]])

注意参与运算的多维数组在水平方向上的个数必须相同。

vstack函数和hstack类似,只不过是在垂直方向上进行堆叠,显然,这个时候要求参与运算的多维数组在垂直方向上的个数要相同。

dstack函数是在深度上进行堆叠,请注意下面的示例,在堆叠之后,多维数组的深度(通过shape属性可查看):

>>> m=arange(16).reshape(4,4)

>>> m

array([[ 0,  1,  2,  3],

       [ 4,  5,  6,  7],

       [ 8,  9, 10, 11],

       [12, 13, 14, 15]])

>>> n=m.transpose()

>>> n

array([[ 0,  4,  8, 12],

       [ 1,  5,  9, 13],

       [ 2,  6, 10, 14],

       [ 3,  7, 11, 15]])

>>> p=dstack((m,n))

>>> p

array([[[ 0,  0],

        [ 1,  4],

        [ 2,  8],

        [ 3, 12]],

 

       [[ 4,  1],

        [ 5,  5],

        [ 6,  9],

        [ 7, 13]],

 

       [[ 8,  2],

        [ 9,  6],

        [10, 10],

        [11, 14]],

 

       [[12,  3],

        [13,  7],

        [14, 11],

        [15, 15]]])

>>> p.shape

(4, 4, 2)

Concatenate函数

Concatenate函数可以用于堆叠,并且可以通过指定axis参数指定堆叠的方向,起到与hstackvstack相同的效果。

>>> m=arange(16).reshape(4,4)

>>> n=m.transpose()

>>> concatenate((m,n),axis=1)

array([[ 0,  1,  2,  3,  0,  4,  8, 12],

       [ 4,  5,  6,  7,  1,  5,  9, 13],

       [ 8,  9, 10, 11,  2,  6, 10, 14],

       [12, 13, 14, 15,  3,  7, 11, 15]])

可见,这个和水平堆叠的效果是一样的。

如果指定axis=0,则为垂直堆叠。但是要注意的是,不要指望能通过令axis=2实现深度堆叠。

行堆叠和列堆叠

行堆叠的效果和vstack效果类似:

>>> m=arange(16).reshape(4,4)

>>> n=m.transpose()

>>> row_stack((m,n))

array([[ 0,  1,  2,  3],

       [ 4,  5,  6,  7],

       [ 8,  9, 10, 11],

       [12, 13, 14, 15],

       [ 0,  4,  8, 12],

       [ 1,  5,  9, 13],

       [ 2,  6, 10, 14],

       [ 3,  7, 11, 15]])

列堆叠与水平堆叠效果类似,这里就不举例了。

  评论这张
 
阅读(244)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016