来自 《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]]