首先关于numpy在所有场合都不建议这样使用

demo = np.array([1, 2, 3])

因为此时demo.shape是只有一个纬度的

(3,)

永远不要使用这种类型,这会使工作中出现各种各样的问题,并且很多操作都难以理解。如果你想使用是一个一维的矩阵应该定义这样的纬度:

(3, 1)

你如果这样做了,那么下面的函数会非常容易理解和记忆,并且在使用的时候不易出问题。

np.vstack()

v是vertical,竖直的意思,将多个矩阵从竖直放心上合并。

a = np.array([1, 2, 3]).reshape(-1,1)
b = np.array([4, 5, 6]).reshape(-1,1)
print(a.shape)   # (3, 1)
print(b.shape)   # (3, 1)

c = np.vstack((a,b))
print(c.shape)  # (6, 1)

看,竖直方向上的合并就是将第一个纬度加起来,多么直观。

np.hstack()

h是horizontal水平的意思,可以这样记:水的分子式是h2o,所以h代表水平。

a = np.array([1, 2, 3]).reshape(-1,1)
b = np.array([4, 5, 6]).reshape(-1,1)
print(a.shape)   # (3, 1)
print(b.shape)   # (3, 1)

c = np.hstack((a,b))
print(c.shape)  # (3, 2)

看,水平方向上的合并就是将第一个纬度加起来,多么直观。

np.dstack()

d代表deep,深度的意思

a = np.array([1, 2, 3]).reshape(-1,1)
b = np.array([4, 5, 6]).reshape(-1,1)
print(a.shape)   # (3, 1)
print(b.shape)   # (3, 1)

c = np.dstack((a,b))
print(c.shape)   # (3, 1, 2)

它会保持合并后矩阵的结构与原先一致,也就是说我们可以用同样的方法取合并后的数据。

print(a[0][0])  # 1
print(b[0][0])  # 4
print(c[0][0])  # [1, 4]
posted @ 2018-05-12 11:07:08
评论加载中...

发表评论