发表文章

[最新] NumPy数组(6)-- 数组的组合

zhubao124 4月前 12

        NumPy数组有水平组合、垂直组合和深度组合等多种组合方式,下面一一介绍。

一、水平组合(hstack)

        1、水平组合:

            两个数组的行数必须相同(不同会抛出异常),列数可以不同。

        2、实例:

from numpy import *
a = arange(9).reshape(3,3)
b = a * 3 #将数组a中的每一个元素乘以3
print(a)
print(b)
print("-----------------------1111--------------------------")

c = a * 5
d = arange(12).reshape(3,4)
e = arange(12).reshape(4,3)
print(hstack((a,b)))
print("-----------------------2222--------------------------")
print(hstack((a,b,c)))
print("-----------------------3333--------------------------")
print(hstack((a,d)))
print("-----------------------4444--------------------------")
#print(hstack((a,e)))

输出结果:

[[0 1 2]
 [3 4 5]
 [6 7 8]]
[[ 0  3  6]
 [ 9 12 15]
 [18 21 24]]
-----------------------1111--------------------------
[[ 0  1  2  0  3  6]
 [ 3  4  5  9 12 15]
 [ 6  7  8 18 21 24]]
-----------------------2222--------------------------
[[ 0  1  2  0  3  6  0  5 10]
 [ 3  4  5  9 12 15 15 20 25]
 [ 6  7  8 18 21 24 30 35 40]]
-----------------------3333--------------------------
[[ 0  1  2  0  1  2  3]
 [ 3  4  5  4  5  6  7]
 [ 6  7  8  8  9 10 11]]
-----------------------4444--------------------------


二、垂直组合(vstack)

        1、垂直组合:

            两个数组的列数必须相同(不同会抛出异常),行数可以不同。

        2、实例:

from numpy import *
a = arange(12).reshape(3,4)
b = arange(16).reshape(4,4)
print(a)
print("-----------------------1111--------------------------")
print(b)
print("-----------------------2222--------------------------")
print(vstack((a,b)))

输出结果:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
-----------------------1111--------------------------
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
-----------------------2222--------------------------
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]

三、深度组合(dstack)

        1、深度组合:

            就是将一系列数组沿着纵轴(深度)方向进行层叠组合。举一个例子,有若干张二维平面内的图像点阵数据,我们可以将这些图像数据沿纵轴方向层叠在一起,这就形象地解释了什么是深度组合。

        2、实例:

from numpy import *

#深度组合的时候,每一个数组的维数要相同,如果不同就会抛出异常
a = arange(12).reshape(2,6)
b = a * 2
c = a * 3
d = a * 4
e = dstack((a,b,c,d))

print(a)
print("-----------------------1111--------------------------")
print(b)
print("-----------------------2222--------------------------")
print(c)
print("-----------------------3333--------------------------")
print(d)
print("-----------------------4444--------------------------")
print(e)
print(e.shape)
print("-----------------------5555--------------------------")

print(a[0][0])
print(b[0][0])
print(c[0][0])
print(d[0][0])

print(e[0][0])
print(e[0][1])
print(e[1][1])
print("-----------------------6666--------------------------")

x = arange(24).reshape(2,3,4)
print(x)
y = arange(24).reshape(2,3,4)
print(y)

z = dstack((x,y))
print(z)
print(z.shape)

    输出结果:

[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]
-----------------------1111--------------------------
[[ 0  2  4  6  8 10]
 [12 14 16 18 20 22]]
-----------------------2222--------------------------
[[ 0  3  6  9 12 15]
 [18 21 24 27 30 33]]
-----------------------3333--------------------------
[[ 0  4  8 12 16 20]
 [24 28 32 36 40 44]]
-----------------------4444--------------------------
[[[ 0  0  0  0]
  [ 1  2  3  4]
  [ 2  4  6  8]
  [ 3  6  9 12]
  [ 4  8 12 16]
  [ 5 10 15 20]]

 [[ 6 12 18 24]
  [ 7 14 21 28]
  [ 8 16 24 32]
  [ 9 18 27 36]
  [10 20 30 40]
  [11 22 33 44]]]
(2, 6, 4)
-----------------------5555--------------------------
0
0
0
0
[0 0 0 0]
[1 2 3 4]
[ 7 14 21 28]
-----------------------6666--------------------------
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
[[[ 0  1  2  3  0  1  2  3]
  [ 4  5  6  7  4  5  6  7]
  [ 8  9 10 11  8  9 10 11]]

 [[12 13 14 15 12 13 14 15]
  [16 17 18 19 16 17 18 19]
  [20 21 22 23 20 21 22 23]]]
(2, 3, 8)

四、列组合(column_stack

        1、列组合:

            以列方式对一维数组进行堆叠。而对于二维数组columm_stack与hstack效果是相同的。

        2、实例:

from numpy import *

a = arange(5)
b = a * 2 
c = a * 3
x = a * 4

print(a)
print(b)
print(c)
print(x)

d = column_stack((a,b,c,x))
print(d)
print(d.shape)

print("-----------------------1111--------------------------")
a = arange(12).reshape(3,4)
b = a * 2
c = a * 3
d = column_stack((a,b,c))
print(a)
print("-----------------------2222--------------------------")
print(b)
print("-----------------------3333--------------------------")
print(c)
print("-----------------------4444--------------------------")
print(d)
print(d.shape)

输出结果:

[0 1 2 3 4]
[0 2 4 6 8]
[ 0  3  6  9 12]
[ 0  4  8 12 16]
[[ 0  0  0  0]
 [ 1  2  3  4]
 [ 2  4  6  8]
 [ 3  6  9 12]
 [ 4  8 12 16]]
(5, 4)
-----------------------1111--------------------------
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
-----------------------2222--------------------------
[[ 0  2  4  6]
 [ 8 10 12 14]
 [16 18 20 22]]
-----------------------3333--------------------------
[[ 0  3  6  9]
 [12 15 18 21]
 [24 27 30 33]]
-----------------------4444--------------------------
[[ 0  1  2  3  0  2  4  6  0  3  6  9]
 [ 4  5  6  7  8 10 12 14 12 15 18 21]
 [ 8  9 10 11 16 18 20 22 24 27 30 33]]
(3, 12)

五、行组合(row_stack):

        1、行组合:

                numpy也有以行方式对数组进行堆叠的函数,这个用于一维数组的函数名为row_stack(),它将数组作为行码放到二维数组中。对于二维数组,row_stack与vstack的效果是相同的。

        2、实例:

from numpy import *

a = arange(5)
b = a * 2 
c = a * 3
x = a * 4

print(a)
print(b)
print(c)
print(x)
print("-----------------------1111--------------------------")

d = row_stack((a,b,c,x))
print(d)
print(d.shape)

print("-----------------------222222222--------------------------")


a = arange(12).reshape(3,4)
b = a * 2
c = a * 3
d = row_stack((a,b,c))
print(a)
print("-----------------------2222--------------------------")
print(b)
print("-----------------------3333--------------------------")
print(c)
print("-----------------------4444--------------------------")
print(d)
print(d.shape)

输出结果:

[0 1 2 3 4]
[0 2 4 6 8]
[ 0  3  6  9 12]
[ 0  4  8 12 16]
-----------------------1111--------------------------
[[ 0  1  2  3  4]
 [ 0  2  4  6  8]
 [ 0  3  6  9 12]
 [ 0  4  8 12 16]]
(4, 5)
-----------------------222222222--------------------------
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
-----------------------2222--------------------------
[[ 0  2  4  6]
 [ 8 10 12 14]
 [16 18 20 22]]
-----------------------3333--------------------------
[[ 0  3  6  9]
 [12 15 18 21]
 [24 27 30 33]]
-----------------------4444--------------------------
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [ 0  2  4  6]
 [ 8 10 12 14]
 [16 18 20 22]
 [ 0  3  6  9]
 [12 15 18 21]
 [24 27 30 33]]
(9, 4)






    

相关推荐
最新评论 (0)
返回
发表文章
zhubao124
文章数
46
评论数
0
注册排名
978908