np.stack 和 np.concatenate区别以及np.meshgrid的用法

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]])

你可能感兴趣的:(python)