numpy中可用于拼接的函数有:
- append(arr, values, axis=None)
- concatenate((a1, a2, …), axis=0, out=None)
- stack(arrays, axis=0, out=None)
- hstack(tup)
- vstack(tup)
- dstack(tup)
使用时需要注意的是除了append都需要以tup形式传入,axis=0表示按行拼接,axis=1表示按列拼接,拼接时需要注意数组形状要匹配。
测试代码
a = np.array([[1, 2, 3],
[1, 2, 3]])
b = np.array([[4, 5, 6]])
np.append(a, b) # 其实底层调用concatenate()
# array([1, 2, 3, 1, 2, 3, 4, 5, 6])
np.append(a, b, axis=0) # 必须保证列数一样
# array([[1, 2, 3],
# [1, 2, 3],
# [4, 5, 6]])
np.append(a, a, axis=1) # 必须保证行数一样
# array([[1, 2, 3, 1, 2, 3],
# [1, 2, 3, 1, 2, 3]])
np.concatenate((a, b)) # 默认axis=0
np.concatenate((a, b), axis=0)
# array([[1, 2, 3],
# [1, 2, 3],
# [4, 5, 6]])
np.concatenate((a, a), axis=1)
# array([[1, 2, 3, 1, 2, 3],
# [1, 2, 3, 1, 2, 3]])
np.stack((a, a)) # 会增加一个维度
# array([[[1, 2, 3],
# [1, 2, 3]],
# [[1, 2, 3],
# [1, 2, 3]]])
np.stack((b, b), axis=1)
# array([[[4, 5, 6],
# [4, 5, 6]]])
np.hstack((a, a)) # 水平拼接
# array([[1, 2, 3, 1, 2, 3],
# [1, 2, 3, 1, 2, 3]])
np.vstack((a, a)) # 垂直拼接
# array([[1, 2, 3],
# [1, 2, 3],
# [1, 2, 3],
# [1, 2, 3]])
np.dstack((a, a)) # 会增加维度
# array([[[1, 1],
# [2, 2],
# [3, 3]],
# [[1, 1],
# [2, 2],
# [3, 3]]])
np.dstack((b, b))
# array([[[4, 4],
# [5, 5],
# [6, 6]]])