np.stack 和 np.concatenate两个函数都可用来连接数组
1.np.stack
import numpy as np
a = np.zeros(12).reshape(4,3,)
b = np.arange(12).reshape(4,3)
# for np.stack:all input arrays must have the same shape
print(np.hstack((a, b)).shape) # (4, 6)
print(np.vstack((a, b)).shape) # (8, 3)
print(np.dstack((a, b)).shape) # (4, 3, 2)
print(np.stack((a, b), axis=0).shape) # (2, 4, 3)
print(np.stack((a, b), axis=1).shape) # (4, 2, 3)
print(np.stack((a, b), axis=2).shape) # (4, 3, 2)
2.np.concatenate
a = np.zeros(12).reshape(2,3, 2)
b = np.arange(6).reshape(2,3, 1)
print(np.concatenate((a, b), axis=2).shape) # (2, 3, 3)
# print(np.stack((a, b), axis=2).shape) # error
print(np.dstack((a, b)).shape) # (2, 3, 3)
3.np.meshgrid:
meshgrid的作用是:
根据传入的两个一维数组参数生成两个数组元素的列表。
如果第一个参数是xarray,维度是xdimesion,
第二个参数是yarray,维度是ydimesion。
那么生成的第一个二维数组是以xarray为行,共ydimesion行的向量;
而第二个二维数组是以yarray的转置为列,共xdimesion列的向量。
x = np.array([1,2,3])
y = np.array([4,5,6,7])
X,Y = np.meshgrid(x,y)
X #以xarray[1,2,3]为行,2行的向量
Y #以yarray转置为列[4,5,6,7],共3列向量
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
array([[4, 4, 4],
[5, 5, 5],
[6, 6, 6],
[7, 7, 7]])