Python numpy 级联

Python numpy concatenate 函数用于连接两个或多个数组,并返回 ndarray 作为输出。Numpy 数组 concatenate 函数的语法是。

numpy.concatenate((array1, array2,....), axis = 0)
  • array1、array2……是要组合的数组。传递给此函数的数组必须具有相同的形状。但是,您可以选择具有不同维度的数组。
  • axis - 这是一个可选参数,默认值为 0。用于指定连接的方向(水平或垂直)。

Python numpy concatenate 数组

在此示例中,我们声明了两个 ndarrays。接下来,我们使用此函数连接这两个数组。

import numpy as np
 
a = np.array([1, 2, 3])
print(a)
 
b = np.array([4, 5, 6])
print(b)
 
print('\n---Result of a and b---')
print(np.concatenate((a, b)))
[1 2 3]
[4 5 6]

---Result of a and b---
[1 2 3 4 5 6]

Python Numpy concatenate 函数不仅限于连接两个数组。您可以使用此函数组合两个以上的数组。在这里,我们使用此函数连接四个不同的数组。

import numpy as np
a = np.array([1, 2, 3])
print(a)
 
b = np.array([4, 5, 6])
print(b)
 
c = np.array([7, 8, 9])
print(c)
 
d = np.array([10, 11, 12])
print(d)
 
print('\n------')
print(np.concatenate((a, b, c, d)))
[1 2 3]
[4 5 6]
[7 8 9]
[10 11 12]

------
[ 1  2  3  4  5  6  7  8  9 10 11 12]

连接二维数组

我们正在使用 Python Numpy concatenate 函数连接二维数组。

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
print()
 
b = np.array([[7, 8, 9],[10, 11, 12]])
print(b)
 
print('\n---Result---')
print(np.concatenate((a, b)))
Python Numpy concatenate 2D or two-dimensional array

这是另一个连接二维数组的示例。

import numpy as np
a = np.array([[10, 20, 30, 40]])
print(a)
 
b = np.array([[50 ,60, 70, 80], [90 ,100, 110, 120]])
print(b)
 
print('\n------')
print(np.concatenate((a, b)))
 
print('\n------')
print(np.concatenate((b, a)))
[[10 20 30 40]]
[[ 50  60  70  80]
 [ 90 100 110 120]]

------
[[ 10  20  30  40]
 [ 50  60  70  80]
 [ 90 100 110 120]]

------
[[ 50  60  70  80]
 [ 90 100 110 120]
 [ 10  20  30  40]]

Python Numpy concatenate 带有 axis 的二维数组

到目前为止,我们一直在不使用 axis 参数的情况下使用此方法。这次,我们在组合二维数组时使用此参数值。请记住,如果 axis = 0,则 b 中的项垂直附加到 a。而 axis = 1 将 b 中的项水平附加到 a。

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
print()
 
b = np.array([[7, 8, 9],[10, 11, 12]])
print(b)
 
print('\n---2D---')
print(np.concatenate((a, b), axis = 0))
 
print('\n---2D---')
print(np.concatenate((a, b), axis = 1))
[[1 2 3]
 [4 5 6]]

[[ 7  8  9]
 [10 11 12]]

---2D---
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

---2D---
[[ 1  2  3  7  8  9]
 [ 4  5  6 10 11 12]]

Python 中,您不必指定 axis。我的意思是,您可以直接使用该值。

import numpy as np
a = np.array([[10, 20, 30], [40, 50, 60]])
print(a)
print()
 
b = np.array([[70, 80, 90],[100, 110, 120]])
print(b)
 
print('\n------')
print(np.concatenate((a, b), 0))
 
print('\n------')
print(np.concatenate((a, b), 1))
[[10 20 30]
 [40 50 60]]

[[ 70  80  90]
 [100 110 120]]

------
[[ 10  20  30]
 [ 40  50  60]
 [ 70  80  90]
 [100 110 120]]

------
[[ 10  20  30  70  80  90]
 [ 40  50  60 100 110 120]]

Python Numpy concatenate 三维数组

在此示例中,我们在三维数组上使用 Numpy concatenate 函数。首先,我们使用 randint 创建了两个三维 随机数组。接下来,我们使用此函数并使用了不同的 axis 值。

import numpy as np
a = np.array(np.random.randint(0, 10, size = (2, 3, 4)))
print(a)
print()
 
b = np.array(np.random.randint(11, 20, size = (2, 3, 4)))
print(b)
 
print('\n---Three Dimensional---')
print(np.concatenate((a, b), axis = -1))

组合三维 numpy 输出

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

 [[4 2 6 0]
  [4 3 6 8]
  [4 8 8 9]]]

[[[12 13 17 16]
  [17 14 16 13]
  [17 16 17 19]]

 [[16 18 18 16]
  [19 16 18 12]
  [18 19 18 14]]]

---Three Dimensional---
[[[ 5  3  6  4 12 13 17 16]
  [ 1  8  1  1 17 14 16 13]
  [ 1  9  7  2 17 16 17 19]]

 [[ 4  2  6  0 16 18 18 16]
  [ 4  3  6  8 19 16 18 12]
  [ 4  8  8  9 18 19 18 14]]]
>>> 

另一个连接三维数组的例子。

import numpy as np
a = np.array(np.random.randint(0, 10, size = (2, 3, 4)))
print(a)
print()
 
b = np.array(np.random.randint(11, 20, size = (2, 3, 4)))
print(b)
 
print('\n---Three Dimensional---')
print(np.concatenate((a, b), axis = -1))
[[[9 4 1 6]
  [1 9 4 5]
  [8 5 1 3]]

 [[9 3 3 3]
  [5 0 6 6]
  [5 9 7 4]]]

[[[16 17 12 12]
  [12 19 19 14]
  [11 11 11 14]]

 [[15 17 13 17]
  [17 13 17 19]
  [18 12 15 11]]]

---Three Dimensional---
[[[ 9  4  1  6 16 17 12 12]
  [ 1  9  4  5 12 19 19 14]
  [ 8  5  1  3 11 11 11 14]]

 [[ 9  3  3  3 15 17 13 17]
  [ 5  0  6  6 17 13 17 19]
  [ 5  9  7  4 18 12 15 11]]]

连接不同大小的数组

到目前为止,我们一直在处理相同大小的数组(连接相同大小的数组)。让我使用此函数连接不同大小的数组。

import numpy as np
x = np.array([1, 2, 3])
print(x)
 
y = np.array([4, 5])
print(y)
 
print('\n---Result---')
print(np.concatenate((x, y)))
print()
 
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
print()
 
d = np.array([[7, 8, 9],[10, 11, 12], [13, 14, 15]])
print(d)
 
print('\n---Two Dimensional---')
print(np.concatenate((a, d), axis = 0))
 
print('\n---Two Dimensional---')
print(np.concatenate((d, a.T), axis = 1))
[1 2 3]
[4 5]

---Result---
[1 2 3 4 5]

[[1 2 3]
 [4 5 6]]

[[ 7  8  9]
 [10 11 12]
 [13 14 15]]

---Two Dimensional---
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]
 [13 14 15]]

---Two Dimensional---
[[ 7  8  9  1  4]
 [10 11 12  2  5]
 [13 14 15  3  6]]

numpy hstack

numpy hstack 函数将数组项水平附加,这与 axis = 1 类似。

import numpy as np
a = np.array([10, 20, 30, 40])
print(a)
 
b = np.array([50 ,60, 70, 80])
print(b)
 
print('\n--- hstack on one Dimensional ---')
print(np.hstack((a, b)))
[10 20 30 40]
[50 60 70 80]

--- hstack on one Dimensional ---
[10 20 30 40 50 60 70 80]

我将使用此 numpy hstack 函数连接二维数组。

import numpy as np
a = np.array(np.random.randint(0, 10, size = (3, 3)))
print(a)
print()
 
b = np.array(np.random.randint(11, 20, size = (3, 3)))
print(b)
 
print('\n---hstack on Two Dimensional ---')
print(np.hstack((a, b)))
[[3 6 0]
 [4 3 5]
 [3 8 7]]

[[11 12 11]
 [12 13 17]
 [19 11 17]]

--- hstack on Two Dimensional ---
[[ 3  6  0 11 12 11]
 [ 4  3  5 12 13 17]
 [ 3  8  7 19 11 17]]

numpy vstack

numpy vstack 函数将数组项垂直附加,这与 axis = 0 类似。

import numpy as np
a = np.array([10, 20, 30, 40])
print(a)
 
b = np.array([50 ,60, 70, 80])
print(b)
 
print('\n--- vstack on one Dimensional ---')
print(np.vstack((a, b)))
[10 20 30 40]
[50 60 70 80]

--- vstack on one Dimensional ---
[[10 20 30 40]
 [50 60 70 80]]

我们正在使用 vstack 函数连接二维数组。

import numpy as np
a = np.array(np.random.randint(0, 10, size = (3, 3)))
print(a)
print()
 
b = np.array(np.random.randint(11, 20, size = (3, 3)))
print(b)
 
print('\n--- vstack on Two Dimensional ---')
print(np.vstack((a, b)))

vstack 函数组合二维输出

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

[[11 17 13]
 [14 12 14]
 [18 17 18]]

--- vstack on Two Dimensional ---
[[ 8  7  1]
 [ 3  4  5]
 [ 8  7  6]
 [11 17 13]
 [14 12 14]
 [18 17 18]]