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

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

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

网易考拉推荐

Numpy入门(三)——操控多维数组的形状  

2015-12-07 17:56:52|  分类: Python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

raval函数/方法

raval函数将多维数组展开为一维数组,以前面的二维数组为例:

>>> ravel(M)

array([1, 2, 3, 4, 5, 6, 7, 8, 9])

请注意,ravel函数返回的是多维数组的视图(View),如果修改了原数组,相应的视图也会修改,下面的代码就很好地说明了这一问题:

>>> rm=ravel(M)

>>> rm

array([1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> M[2,2]=10

>>> rm

array([ 1,  2,  3,  4,  5,  6,  7,  8, 10])

当然,也可以采用方法调用的形式M.raval()创建其展开后视图。

flatten方法

另外一个是flatten()方法,字如其名,就是把多维数组平铺开。效果和ravel类似,但是这种方式会重新分配内存:

>>> M=array([[1,2,3],[4,5,6],[7,8,9]])

>>> tt=M.flatten()

>>> M[2,2]=10

>>> tt

array([1, 2, 3, 4, 5, 6, 7, 8, 9])

注意这个只能采用多维数组的方法调用。

reshape函数/方法

还有一个是reshape函数/方法。使用方式同raval类似,可以使用reshape函数,也可以通过多维数组的方法调用。这里先创建一个新的多维数组:

>>> N=array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])

>>> N

array([[ 1,  2,  3],

       [ 4,  5,  6],

       [ 7,  8,  9],

       [10, 11, 12]])

这是一个34列的矩阵,如果要修改为一个26列,可以使用如下方法:

>>> N.reshape(2,6)

array([[ 1,  2,  3,  4,  5,  6],

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

注意函数调用和方法调用的形式不一样:

>>> reshape(N,(2,6))

array([[ 1,  2,  3,  4,  5,  6],

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

这些方法和函数都不修改原始的多维数组。

resize方法

这个方法会修改原始多维数组,其他行为和reshape类似。

还是用前面的3×4N矩阵为例:

>>> N.resize(2,6)

>>> N

array([[ 1,  2,  3,  4,  5,  6],

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

可见N的行列被修改了。

另外和resize类似的方式是使用shape属性,也能够修改原始多维数组:

>>> N.reshape(3,4)

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

       [ 5,  6,  7,  8],

       [ 9, 10, 11, 12]])

>>> N.shape=(2,6)

>>> N

array([[ 1,  2,  3,  4,  5,  6],

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

转置

在线性代数中,转置是一个很常用的操作,numpy中使用transpose实现转置:

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

>>> m

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

       [ 4,  5,  6,  7],

       [ 8,  9, 10, 11]])

>>> m.transpose()

array([[ 0,  4,  8],

       [ 1,  5,  9],

       [ 2,  6, 10],

       [ 3,  7, 11]])

另外,多维数组的属性T也能给出该多维数组的转置。

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

历史上的今天

评论

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

页脚

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