学习Python数据分析随手笔记【一】numpy数组的函数简单应用

Numpy数组在处理向量求和的问题上比不用numpy数组下 纯python来解决的问题要省事的多

下面是纯python语言

def sum1(n)

       a= range(n)

       b= range(n)

def sum2()

       for in range(len(a))

              a[i]= i**2

              b[i]=i**3

              c.append(a[i]+b[i])

return c

 

 

n = raw_input(“n”)

def sum(n)

       a= numpy.arange(n)**2

       b= numpy.arange(n)**3

       c= a+b

       return c

以下是一些numpy数组的函数 ravel()拆解flatten()拉直 transpose()矩阵的转置 resize()改变数组的结构

水平叠加:hstack水平叠加两个数组

>>> a

array([[0, 1, 2],

      [3, 4, 5],

      [6, 7, 8]])

>>> b = 2*a

>>> b

array([[ 0, 2,  4],

      [ 6,  8, 10],

      [12, 14, 16]])

>>> numpy.hstack((a,b))

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

      [ 3,  4,  5, 6,  8, 10],

      [ 6,  7,  8, 12, 14, 16]])

>>> 

同样的concatenate()函数也可以如此

值得一提的是当这个函数axis参数为1时才可以实现

Axis代表维度 当一维数组的时候axis值为1

至于怎么理解axis呢?

例如

c = ([[1,2,3,4],[5,6,7,8],

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

执行一下代码

In:c.sum(axis = 0)

Out:

[2,4,6,8],[10,12,14,16]

如果将c看做是一个2X2的矩阵,那么结果就显而易见了。当axis = 0时是将这个矩阵每一列求和然后输出

看一下axis = 1时

In:c.sum(axis = 1)

Out:

[6,8,10,14],[6,8,10,14]

还是将c看做一个2X2的矩阵那么结果就是矩阵每一行的和

当axis = 2时 是将矩阵内的每个元素进行求和,即对列表中每个元素求和,返回一个2X2的矩阵

In:c.sum(axis = 2)

Out: [10,26]

       [10,26]

接下来就是深度叠加函数 dstack()

numpy.dstack((a,b))

array([[[ 0,  0],

       [ 1,  2],

       [ 2,  4]],

 

      [[ 3,  6],

       [ 4,  8],

       [ 5, 10]],

 

      [[ 6, 12],

       [ 7, 14],

       [ 8, 16]]])

这是利用纵向的方法来叠加一摞数组,举个例子就是讲一个图像数据的二维数组上叠加另一幅图像的数据。

列式堆叠column_stack()

>>> once = p.arange(2)

>>> twice = 2*once

>>> p.column_stack(once,twice)

>>> once

array([0, 1])

>>> twice

array([0, 2])

>>> p.column_stack((once,twice))

array([[0, 0],

      [1, 2]])

讲column_stack跟hstack对比一下发现这两个函数形成的数组是相同的,如果用==运算符来检验一下看一下

In:p.column_stack((a,b))== p.hstack((a,b))

Out:array([[True,  True,  True, True,  True,  True],

      [ True,  True,  True, True,  True,  True],

      [ True,  True,  True, True,  True,  True]])

没错 是一摸一样的。

既然numpy有办法将数组合并,那么就一定有办法将数组拆分。

还是借用上面的数组进行操作

相关的函数有hsplit() vsplit() dsplist split()

先来介绍第一个 hsplit()横向拆分。

In:a

Out: array([[0, 1, 2],

      [3, 4, 5],

      [6, 7, 8]])

In:hsplit(a,3)

Out:[array([[0],

      [3],

      [6]]),

array([[1],

      [4],

      [7]]),

 array([[2],

      [5],

      [8]])]

接下来介绍的是纵向拆分 vsplit()函数

将数组沿着纵轴的方向进行拆分

In:vsplit(a,3)

Out: p.vsplit(a,3)

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

其实也相当于用split函数 axis参数为0的分解

p.split(a,3,axis = 0)

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

最后是深度拆分 dsplit()他会沿着深度的方向进行拆分

下面列举一个秩为4的数组进行说明

In:p.dsplit(sc,4)

Out:[array([[[ 0],

       [ 4],

       [ 8],

       [12]],

 

      [[16],

       [20],

       [24],

       [28]],

 

      [[32],

       [36],

       [40],

       [44]],

 

      [[48],

       [52],

       [56],

       [60]]]), array([[[ 1],

       [ 5],

       [ 9],

       [13]],

 

      [[17],

       [21],

       [25],

       [29]],

 

      [[33],

       [37],

       [41],

       [45]],

 

      [[49],

       [53],

       [57],

       [61]]]), array([[[ 2],

       [ 6],

       [10],

       [14]],

 

      [[18],

       [22],

       [26],

       [30]],

 

      [[34],

       [38],

       [42],

       [46]],

 

      [[50],

       [54],

       [58],

       [62]]]), array([[[ 3],

       [ 7],

       [11],

       [15]],

 

      [[19],

       [23],

       [27],

       [31]],

 

      [[35],

       [39],

       [43],

       [47]],

 

      [[51],

       [55],

       [59],

       [63]]])]


内容来自 Ivan Idris所著Python数据分析

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值