NumPy 数组组合分割

11 篇文章 0 订阅

原文地址:http://blog.csdn.net/lsjseu/article/details/20359201

在原文基础上适当精简并更正少量原作者的笔误:

 

1. 组合(stack)不同的数组

几种方法可以沿不同轴将数组堆叠在一起:

>>> a =floor(10*random.random((2,2)))
>>> a
array([[ 1.,  1.],
       [ 5., 8.]])
>>> b =floor(10*random.random((2,2)))
>>> b
array([[ 3.,  3.],
       [ 6., 0.]])
>>> vstack((a,b)) #vertical
array([[ 1.,  1.],
       [ 5., 8.],
       [ 3., 3.],
       [ 6., 0.]])
>>> hstack((a,b)) #horizonal
array([[ 1.,  1., 3.,  3.],
       [ 5., 8.,  6.,  0.]])

2. 函数 column_stack 以列将一维数组合成二维数组,它等同与vstack 对一维数组:

>>>column_stack((a,b))   # With 2D arrays
array([[ 1.,  1., 3.,  3.],
       [ 5., 8.,  6.,  0.]])
>>>a=array([4.,2.])
>>>b=array([2.,8.])
>>>a[:,newaxis] 
# This allows tohave a 2D columns vector
array([[ 4.],
       [ 2.]])
>>>column_stack((a[:,newaxis],b[:,newaxis]))
array([[ 4.,  2.],
       [ 2., 8.]])
>>>vstack((a[:,newaxis],b[:,newaxis]))
# The behavior ofvstack is different
array([[ 4.],
       [ 2.],
       [ 2.],
       [ 8.]])

在复杂情况下, r_[]c_[] 对创建沿着一个方向组合的数很有用,它们允许范围符号(“:”):

>>> r_[1:4,0,4]
array([1, 2, 3, 0,4])

3. 将一个数组分割(split)成几个小数组:

使用 hsplit你能将数组进行纵向分割,或者指定返回相同形状数组的个数,或者指定在哪些列后发生分割:

>>> a =floor(10*random.random((2,12)))
>>> a
array([[ 8., 8., 3.,  9.,  0.,   4.,  3.,  0.,   0.,  6.,  4.,   4.],
     [ 0., 3., 2.,  9.,   6.,  0.,  4.,   5.,  7.,  5.,   1.,  4.]])
>>> hsplit(a,3)   # Split a into 3
[array([ [ 8., 8.,   3.,  9.],
      [ 0., 3.,  2.,  9.]]), 
 array([[ 0., 4.,   3.,  0.],
      [ 6., 0.,  4.,  5.]]), 
 array([[ 0., 6.,   4.,  4.],
      [ 7., 5.,  1.,  4.]])]
>>>hsplit(a,(3,4))   # Split a after thethird and the fourth column
[array([ [ 8., 8., 3.],
      [ 0., 3., 2.]]), 
 array([[ 9.],
      [ 9.]]), 
 array([[ 0.,  4.,   3.,  0.,  0.,   6.,  4.,  4.],
      [ 6.,   0.,  4.,  5.,   7.,  5.,  1.,   4.]])]

vsplit降数组进行横向分割, arraysplit允许指定沿哪个轴分割。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值