在写代码时,经常会遇到多个矩阵数组拼接的情况,numpy里dstack, hstack, vstack, 都有拼接的作用,那么这些函数是怎么执行的,他们的结果又如何呢?
np.dstack()
按深度顺序堆叠arrays。当数组为2维数组(M,N)或1维数组(N,)时,首先分别将其维度改变为(M,N,1)、(1,N,1),然后沿着第三根轴(r/g/b通道)进行拼接。
栗子:
- # 一维
- a = np.array([1, 2])
- b = np.array([3, 4])
- print(np.dstack((a,b)))
-
- # 二维
- a = np.array([[1, 1],
- ? ? ? ? ? ? ? [2, 2],
- ? ? ? ? ? ? ? [3, 3]])
- b = np.array([[4, 4],
- ? ? ? ? ? ? ? [5, 5],
- ? ? ? ? ? ? ? [6, 6]])
- print(np.dstack((a,b)))
-
- # 运行结果
- [[[1 3]
- ? [2 4]]]
- ??
- [[[1 4]
- ? [1 4]]
- ?[[2 5]
- ? [2 5]]
- ?[[3 6]
- ? [3 6]]]
np.hstack()
水平方向(列)顺序堆叠arrays。
栗子:
- import numpy as np
-
- # 一维
- a = np.array([1, 2])
- b = np.array([3, 4])
- print(np.hstack((a,b)))
-
- # 二维
- a = np.array([[1, 1],
- ? ? ? ? ? ? ? [2, 2],
- ? ? ? ? ? ? ? [3, 3]])
- b = np.array([[4, 4],
- ? ? ? ? ? ? ? [5, 5],
- ? ? ? ? ? ? ? [6, 6]])
- print(np.hstack((a,b)))
-
- # 运行结果
- [1 2 3 4]
-
- [[1 1 4 4]
- ?[2 2 5 5]
- ?[3 3 6 6]]
np.vstack()
垂直方向(行)顺序堆叠arrays。
栗子:
- # 一维
- a = np.array([1, 2])
- b = np.array([3, 4])
- print(np.vstack((a,b)))
-
- # 二维
- a = np.array([[1, 1],
- ? ? ? ? ? ? ? [2, 2],
- ? ? ? ? ? ? ? [3, 3]])
- b = np.array([[4, 4],
- ? ? ? ? ? ? ? [5, 5],
- ? ? ? ? ? ? ? [6, 6]])
- print(np.vstack((a,b)))
-
- # 运行结果
- [[1 2]
- ?[3 4]]
- ?
- [[1 1]
- ?[2 2]
- ?[3 3]
- ?[4 4]
- ?[5 5]
- ?[6 6]]
到此这篇关于numpy中np.dstack()、np.hstack()、np.vstack()用法的文章就介绍到这了,更多相关np.dstack()、np.hstack()、np.vstack()内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!