首页 > 编程笔记

NumPy合并两个数组(3个函数)

在 NumPy 中,连接(合并)数组是一项常见的操作,它允许我们将多个数组组合成一个更大的数组。

以下是一些常用的 NumPy 函数,用于连接数组:
1) concatenate()函数用于沿指定轴连接相同形状的多个数组对象,其语法格式如下:
concatenate(ndarrays,axis)
其中,参数 ndarrays 表示待连接的多个数组对象所组成的元组;参数 axis 表示数组对象的轴索引,该参数为可选参数,其默认值为 0。

2) hstack() 函数用于沿 1 轴堆叠多个数组对象,其语法格式如下:
hstack(ndarrays)
其中,参数 ndarrays 表示待连接的多个数组对象所组成的元组。

3) vstack() 函数用于沿 0 轴堆叠多个数组对象,其语法格式如下:
vstack(ndarrays)
其中,参数 ndarrays 表示待连接的多个数组对象所组成的元组。

示例代码如下:
import numpy as np

# 一维数组对象
al = np.array([1, 2, 3, 4, 5])
a2 = np.array([6, 7, 8, 9, 10])
print(np.concatenate((al, a2)))
print('===================')
print(np.hstack((al, a2)))
print('===================')
print(np.vstack((al, a2)))
print('===================')

# 二维数组对象
b1 = np.array([[1, 2],
              [3, 4]])
b2 = np.array([[5, 6],
              [7, 8]])
print(np.concatenate((b1, b2)))
print(np.concatenate((b1, b2), axis=1))
print('===================')
print(np.hstack((b1, b2)))
print('===================')
print(np.vstack((b1, b2)))
print('===================')

# 三维数组对象
c1 = np.array([[[1, 2, 3],
               [4, 5, 6],
               [7, 8, 9]]],
              [[[10, 11, 12],
               [13, 14, 15],
               [16, 17, 18]]])

c2 = np.array([[[19, 20, 21],
               [22, 23, 24],
               [25, 26, 27]]],
              [[[28, 29, 30],
               [31, 32, 33],
               [34, 35, 36]]])

print(np.concatenate((c1, c2)))
print('===================')
print(np.concatenate((c1, c2), axis=1))
print('===================')
print(np.concatenate((c1, c2), axis=2))
print('===================')
print(np.hstack((c1, c2)))
print('===================')
print(np.vstack((c1, c2)))

运行结果为:
[1 2 3 4 5 6 7 8 9 10]
===================
[[ 1  2  6  7  8  9 10]
[ 3  4  5  5  6  7 11 12]]
===================
[[ 1  2  3  4  5  6  7  8]
[ 3  4  5  6  7  8  9 10]]
===================
[[1 2 3 4 5]
[3 4 5 6 7]
[5 6 7 8 9]
[7 8 9 10]]
===================

[[1 2 5 6]
[3 4 7 8]]
===================

[[1 2]
[3 4]
[5 6]
[7 8]]
===================

[[1 2 5 6]
[3 4 7 8]]
===================

[[[ 1  2  3]
  [ 4  5  6]
  [ 7  8  9]
  [10 11 12]
  [13 14 15]
  [16 17 18]
  [19 20 21]
  [22 23 24]
  [25 26 27]
  [28 29 30]
  [31 32 33]
  [34 35 36]]

[[[19 20 21]
  [22 23 24]
  [25 26 27]
  [28 29 30]
  [31 32 33]
  [34 35 36]]]
===================

[[[ 1  2  3  4 ... 19 20 21]
  [ 4  5  6  7 ... 22 23 24]
  [ 7  8  9 10 ... 25 26 27]
  [10 11 12 13 ... 28 29 30]
  [13 14 15 16 ... 31 32 33]
  [16 17 18 19 ... 34 35 36]]]

[[[ 1  2  3  4 ...  7  8  9]
  [ 5  6  7  8 ... 11 12 13]
  [10 11 12 13 ... 14 15 16]
  [13 14 15 16 ... 17 18 19]
  [16 17 18 19 ... 20 21 22]
  [19 20 21 22 ... 23 24 25]
  [22 23 24 25 ... 26 27 28]
  [25 26 27 28 ... 29 30 31]
  [28 29 30 31 ... 32 33 34]
  [31 32 33 34 ... 35 36]]]
===================

[[[ 1  2]
  [ 3  4]
  [ 5  6]
  [ 7  8]
  [ 9 10]
  [11 12]
  [13 14]
  [15 16]
  [17 18]
  [19 20]
  [21 22]
  [23 24]
  [25 26]
  [27 28]
  [29 30]
  [31 32]
  [33 34]
  [35 36]]]

[[[ 1  2  3  4  5  6  7  8]
  [ 3  4  5  6  7  8  9 10]
  [ 5  6  7  8  9 10 11 12]
  [ 7  8  9 10 11 12 13 14]
  [10 11 12 13 14 15 16 17]
  [13 14 15 16 17 18 19 20]
  [16 17 18 19 20 21 22 23]
  [19 20 21 22 23 24 25 26]
  [22 23 24 25 26 27 28 29]
  [25 26 27 28 29 30 31 32]
  [28 29 30 31 32 33 34 35]
  [31 32 33 34 35 36]]]

推荐阅读