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)))

这是另一个连接二维数组的示例。
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]]