NumPy 数组组合分割
原文地址: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允许指定沿哪个轴分割。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。