NumPy 的 concatenate()
方法沿现有轴连接一系列数组。
示例
import numpy as np
array1 = np.array([[0, 1], [2, 3]])
array2 = np.array([[4, 5], [6, 7]])
# join the arrays
concatenatedArray = np.concatenate((array1, array2))
print(concatenatedArray)
'''
Output:
[[0 1]
[2 3]
[4 5]
[6 7]]
'''
concatenate() 语法
concatenate()
的语法是
numpy.concatenate((array1, array2, …), axis, out)
concatenate() 参数
concatenate()
方法接受以下参数
(array1, array2, …)
- 要连接的数组序列axis
(可选)- 定义连接数组的维度out
(可选) - 用于存储结果的目标。dtype
(可选) - 结果数组的数据类型
注意事项
- 除连接轴外,所有输入数组的维度必须完全匹配。
- 最多只能传递
out
和dtype
参数中的一个。
concatenate() 返回值
concatenate()
方法返回连接后的数组。
示例 1:连接两个数组
import numpy as np
array1 = np.array( [ [1, 2], [3, 4] ] )
array2 = np.array( [[5, 6]] )
# concatenate the arrays along axis 0
concatenatedArray = np.concatenate((array1, array2))
print(concatenatedArray)
# concatenate the arrays along axis 0
concatenatedArray = np.concatenate((array1, array2), axis = 0)
print(concatenatedArray)
输出
[[1 2] [3 4] [5 6]] [[1 2] [3 4] [5 6]]
如果我们不传递 axis
参数,axis
的值默认为 0。
示例 2:连接不同维度的两个数组
import numpy as np
array1 = np.array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]])
array2 = np.array([[[10, 11], [12, 13]], [[14, 15], [16, 17]]])
print('Joining the array when axis = 0')
# join the arrays at axis equal to 0
concatenatedArray = np.concatenate((array1, array2), 0)
print(concatenatedArray)
print('Joining the array when axis = 1')
# join the array at axis equal to 1
concatenatedArray = np.concatenate((array1, array2), 1)
print(concatenatedArray)
print('Joining the array when axis = 2')
# join the array at axis equal to 2
concatenatedArray = np.concatenate((array1, array2), 2)
print(concatenatedArray)
输出
Joining the array when axis = 0 [[[ 0 1] [ 2 3]] [[ 4 5] [ 6 7]] [[10 11] [12 13]] [[14 15] [16 17]]] Joining the array when axis = 1 [[[ 0 1] [ 2 3] [10 11] [12 13]] [[ 4 5] [ 6 7] [14 15] [16 17]]] Joining the array when axis = 2 [[[ 0 1 10 11] [ 2 3 12 13]] [[ 4 5 14 15] [ 6 7 16 17]]]
示例 3:连接展平的数组
如果我们传递 None
作为 axis
参数,concatenate()
会展平数组并连接它们。
import numpy as np
array1 = np.array([[0, 1], [2, 3]])
array2 = np.array([[10, 11], [12, 13]])
# join the flat arrays
concatenatedArray = np.concatenate((array1, array2), None)
print(concatenatedArray)
输出
[ 0 1 2 3 10 11 12 13]
注意:我们也可以使用 numpy.append()
来连接数组。但是,与 numpy.concatenate
不同,numpy.append
会创建带有附加值的新副本,因此效率较低。
示例 4:将现有数组作为连接数组返回
在我们之前的示例中,concatenate()
创建了一个新的结果数组。
然而,将现有数组作为
out
参数将结果数组存储在给定的数组中。import numpy as np
array1 = np.array([[0, 1], [2, 3]])
array2 = np.array([[10, 11], [12, 13]])
# create an array of shape (4, 2)
# and initialize all elements to 0
array3 = np.zeros((4, 2))
# join the arrays and store result in array3
np.concatenate((array1, array2), out = array3)
print(array3)
Output
[[ 0. 1.] [ 2. 3.] [10. 11.] [12. 13.]]
注意事项
- 输出数组的形状必须与连接数组的形状匹配,否则会出错。
- 所有输入数组的维度保持不变(连接轴除外)。
示例 5:指定连接数组的数据类型
我们可以通过传递 dtype
参数来更改连接数组的数据类型。
import numpy as np
array1 = np.array([[0, 1], [2, 3]])
array2 = np.array([[10, 11], [12, 13]])
# change elements of the concatenated array to string
concatenatedArray = np.concatenate((array1, array2), dtype = str)
print(concatenatedArray)
输出
[['0' '1'] ['2' '3'] ['10' '11'] ['12' '13']]
相关的 NumPy 方法
- numpy.vstack() 沿轴 0 连接数组。
- numpy.hstack() 沿轴 1 连接数组。
- numpy.dstack() 沿轴 2 连接数组。