Numpy 组合数组的几种方法

来自 《Python数据分析基础教程:Numpy 学习指南(第2版)》

下面将介绍组合数组的几种方法:

  • 水平组合
  • 垂直组合
  • 深度组合
  • 列组合
  • 行组合


    0.创建两个3*3的数组

from numpy import *
a = arange(9).reshape(3,3) 
print(a)
b = 2 * a
print(b)

    得到结果

[[0 1 2]
 [3 4 5]
 [6 7 8]]
[[ 0  2  4]
 [ 6  8 10]
 [12 14 16]]

    1.水平组合

    将ndarray对象构成的元组作为参数,传给hstack函数

c = hstack((a,b))
print(c)

    或者用concatenate函数实现同样的效果

c = concatenate((a,b), axis=1)
print(c)

    得到结果

[[ 0  1  2  0  2  4]
 [ 3  4  5  6  8 10]
 [ 6  7  8 12 14 16]]

    2.垂直组合

    同样需要构造一个元组作为参数,只不过是传给vstack函数

c = vstack((a,b))
print(c)

    或者用concatenate函数实现同样的效果,此时axis参数设置为0,这也是axis参数的默认值

c = concatenate((a,b), axis=0)
print(c)

    得到结果

[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 0  2  4]
 [ 6  8 10]
 [12 14 16]]

    3.深度组合

    将相同的元组作为参数传给dstack函数,即可完成数组的深度组合。所谓深度组合,就是将一系列数组沿着纵轴(深度)的方向进行层叠组合。举个例子,有若干张二维平面内的图像点阵数据,我们可将这些图像数据沿纵轴方向层叠在一起,这就形象地解释了什么是深度组合。

c = dstack((a,b))
print(c)
    得到结果
[[[ 0  0]
  [ 1  2]
  [ 2  4]]

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

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

    4.列组合

    column_stack函数对于一维数组将按列方向进行组合,如下所示:

oned = arange(2)
print(oned)
twice_oned = 2 * oned
print(twice_oned)
c = column_stack((oned, twice_oned))
print(c)

    得到结果

[0 1]
[0 2]
[[0 0]
 [1 2]]

    对于二维数组,column_stack与hstack的效果是相同的:

[[ 0  1  2  0  2  4]
 [ 3  4  5  6  8 10]
 [ 6  7  8 12 14 16]]

    5.行组合

    对于两个一维数组,将直接层叠起来组合成一个二维数组

c = row_stack((oned, twice_oned))
print(c)

    得到结果

[[0 1]
 [0 2]]

    对于二维数组,row_stack与vstack的效果相同

[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 0  2  4]
 [ 6  8 10]
 [12 14 16]]


阅读更多
文章标签: Numpy Python 数组
个人分类: python Numpy
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭