1. 程式人生 > >numpy中的meshgrid函式

numpy中的meshgrid函式

numpy中的meshgrid函式

2017年12月17日 20:50:46 修煉之路 閱讀數:5170更多

個人分類: numpy修煉之路

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/sinat_29957455/article/details/78825945

numpy官方文件meshgrid函式幫助文件https://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html

 

meshgrid(*xi, **kwargs)

功能:從一個座標向量中返回一個座標矩陣

 

引數:

x1,x2...,xn:陣列,一維的陣列代表網格的座標。

indexing:{'xy','ij'},笛卡爾座標'xy'或矩陣'ij'下標作為輸出,預設的是笛卡爾座標。

sparse:bool型別,如果為True,返回一個稀疏矩陣儲存在記憶體中,預設是False。

copy:bool型別,如果是False,返回一個原始陣列的檢視儲存在記憶體中,預設是True。如果,sparse和copy都為False,將有可能返回一個不連續的陣列。而且,如果廣播陣列的元素超過一個,可以使用一個獨立的記憶體。如果想要對這個陣列進行寫操作,請先拷貝這個陣列。

返回值:x1,x2,....,xn:ndarray(numpy陣列)

可能看完官方的文件之後還是一臉懵逼,下面通過幾個例子來解釋說明一下。

 

 
  1. nx,ny = (3,2)

  2. #從0開始到1結束,返回一個numpy陣列,nx代表陣列中元素的個數

  3. x = np.linspace(0,1,nx)

  4. #[ 0. 0.5 1. ]

  5. y = np.linspace(0,1,ny)

  6. # [0. 1.]

  7. xv,yv = np.meshgrid(x,y)

  8. '''

  9. xv

  10. [[ 0. 0.5 1. ]

  11. [ 0. 0.5 1. ]]

  12. yv

  13. [[ 0. 0. 0.]

  14. [ 1. 1. 1.]]

  15. '''

通過上面的例子,其實可以發現meshgrid函式將兩個輸入的陣列x和y進行擴充套件,前一個的擴充套件與後一個有關,後一個的擴充套件與前一個有關,前一個是豎向擴充套件,後一個是橫向擴充套件。因為,y的大小為2,所以x豎向擴充套件為原來的兩倍,而x的大小為3,所以y橫向擴充套件為原來的3倍。通過meshgrid函式之後,輸入由原來的陣列變成了一個矩陣。通過使用meshgrid函式,可以產生一個表格矩陣,下面用一個例子來展示產生一個2*2網格的座標,每個網格的大小為1。

 

 

 
  1. nx,ny = (3,3)

  2. #從0開始到1結束,返回一個numpy陣列,nx代表陣列中元素的個數

  3. x = np.linspace(0,2,nx)

  4. # [0. 1. 2.]

  5. y = np.linspace(0,2,ny)

  6. # [0. 1. 2.]

  7. xv,yv = np.meshgrid(x,y)

  8. print(xv.ravel())

  9. #[ 0. 1. 2. 0. 1. 2. 0. 1. 2.]

  10. print(yv.ravel())

  11. #[ 0. 0. 0. 1. 1. 1. 2. 2. 2.]

ravel函式是將矩陣變為一個一維的陣列,其中xv.ravel()就表示x軸的座標,yv.ravel()就表示了y軸的座標,我們將x軸的座標和y軸的座標進行一一對應,就產生了一個2*2大小為1的網格中的9個點的座標。

 

如果,將sparse引數設定為True,就不會向上面一樣進行擴充套件了,也就是說它產生的網格座標不是所有的網格座標,而是網格對角線上的座標點。

 

 
  1. nx,ny = (3,3)

  2. #從0開始到1結束,返回一個numpy陣列,nx代表陣列中元素的個數

  3. x = np.linspace(0,2,nx)

  4. # [ 0. 0.5 1. ]

  5. y = np.linspace(0,2,ny)

  6. # [ 1. 1.5 2. ]

  7. xv,yv = np.meshgrid(x,y,sparse=True)

  8. print(xv)

  9. #[[ 0. 1. 2.]]

  10. print(yv)

  11. '''

  12. [[ 0.]

  13. [ 1.]

  14. [ 2.]]

  15. '''