Numpy中Meshgrid函數介紹及2種應用場景

2021-03-02 Python數據之道

近期在好幾個地方都看到meshgrid的使用,雖然之前也注意到meshgrid的用法。

但總覺得印象不深刻,不是太了解meshgrid的應用場景。

所以,本文將進一步介紹Numpy中meshgrid的用法。

Meshgrid函數的基本用法

在Numpy的官方文章裡,meshgrid函數的英文描述也顯得文縐縐的,理解起來有些難度。

可以這麼理解,meshgrid函數用兩個坐標軸上的點在平面上畫網格。

用法:

  [X,Y]=meshgrid(x,y)

  [X,Y]=meshgrid(x)與[X,Y]=meshgrid(x,x)是等同的

  [X,Y,Z]=meshgrid(x,y,z)生成三維數組,可用來計算三變量的函數和繪製三維立體圖

這裡,主要以[X,Y]=meshgrid(x,y)為例,來對該函數進行介紹。

[X,Y] = meshgrid(x,y) 將向量x和y定義的區域轉換成矩陣X和Y,其中矩陣X的行向量是向量x的簡單複製,而矩陣Y的列向量是向量y的簡單複製(註:下面代碼中X和Y均是數組,在文中統一稱為矩陣了)。

假設x是長度為m的向量,y是長度為n的向量,則最終生成的矩陣X和Y的維度都是 n*m (注意不是m*n)。

文字描述可能不是太好理解,下面通過代碼演示下:

加載數據

import numpy as np

import matplotlib.pyplot as plt

%matplotlib inline

m, n = (5, 3)

x = np.linspace(0, 1, m)

y = np.linspace(0, 1, n)

X, Y = np.meshgrid(x,y)

查看向量x和向量y

x

out:

array([ 0.  ,  0.25,  0.5 ,  0.75,  1.  ])

y

out:

array([ 0. ,  0.5,  1. ])

查看矩陣X和矩陣Y

X

out:

array([[ 0.  ,  0.25,  0.5 ,  0.75,  1.  ],

      [ 0.  ,  0.25,  0.5 ,  0.75,  1.  ],

      [ 0.  ,  0.25,  0.5 ,  0.75,  1.  ]])

Y

out:

array([[ 0. ,  0. ,  0. ,  0. ,  0. ],

      [ 0.5,  0.5,  0.5,  0.5,  0.5],

      [ 1. ,  1. ,  1. ,  1. ,  1. ]])

查看矩陣對應的維度

X.shape

out:

(3, 5)

Y.shape

out:

(3, 5)

meshgrid函數的運行過程,可以通過下面的示意圖來加深理解:

再者,也可以通過在matplotlib中進行可視化,來查看函數運行後得到的網格化數據的結果

plt.plot(X, Y, marker='.', color='blue', linestyle='none')

plt.show()

當然,我們也可以獲得網格平面上坐標點的數據,如下:

z = [i for i in zip(X.flat,Y.flat)]

z

out:

[(0.0, 0.0),

(0.25, 0.0),

(0.5, 0.0),

(0.75, 0.0),

(1.0, 0.0),

(0.0, 0.5),

(0.25, 0.5),

(0.5, 0.5),

(0.75, 0.5),

(1.0, 0.5),

(0.0, 1.0),

(0.25, 1.0),

(0.5, 1.0),

(0.75, 1.0),

(1.0, 1.0)]

Meshgrid函數的一些應用場景

Meshgrid函數常用的場景有等高線繪製及機器學習中SVC超平面的繪製(二維場景下)。

分別圖示如下:

(1)等高線

(2)SVC中超平面的繪製:

關於場景(1)和場景(2),將在後續的文章裡做進一步描述。

當然,可能還有些其他場景,這裡就不做進一步介紹了。

如果您喜歡我的文章,歡迎推薦給您的朋友~~

 End 

精選文章(點擊圖片即可查看文章):

機器學習很枯燥,不想繼續學了怎麼辦?或許,這些建議值得一看

相關焦點

  • Python數據分析筆記#5.2 Numpy-函數
    目錄利用數組進行數據處理通用函數:元素級數組函數通用函數可以快速對ndarray中的數據執行元素級運算。1.一元通用函數(接受一個數組)In [1]: import numpy as npIn [2]: arr = np.arange(10)In [3]: arrOut[3]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
  • 圖解NumPy:常用函數的內在機制
    其兩個常用功能都有各自的專用函數:過度重載的 np.where 函數和 np.clip 函數。它們的含義如下:向量運算NumPy 在速度上很出彩的一大應用領域是算術運算。向量運算符會被轉換到 C++ 層面上執行,從而避免緩慢的 Python 循環的成本。NumPy 支持像操作普通的數那樣操作整個數組。
  • Matplotlib 中等高線圖(contour)的繪製
    前言在此前的文章裡,我們介紹了 Numpy 中 meshgrid 函數的應用,並提到了等高線圖的使用。
  • Python——Numpy基礎使用指南
    在MATLAB處理這類問題的方法是創建一個meshgrid:該meshgrid函數接受任意一組索引,mgrid僅是切片,indices只能生成完整的索引範圍。fromfunction如上所述,僅使用I和J參數一次調用提供的函數。
  • 【筆記】高效率但卻沒用過的一些numpy函數
    最近在看源碼的時候,碰到了一些大佬們常用,但自己暫時還沒用過的numpy函數,特意來總結下。該函數的功能是將兩個一維向量轉化成矩陣,具體看代碼:先做個初始化等介紹完下面一個函數再詳細解釋哈。np.ravel() vs np.flatten()功能是一樣的,都是將多為數組降為一維。具體區別上代碼:繼續用上面代碼中的數據:
  • 20個不常見但卻非常有用的Numpy函數
    +40, 2.68811714e+43])np.meshgrid這是只有在文檔中才能看到的函數之一。可以使用meshgrid從給定的X和Y數組創建每個可能的坐標對。這裡有一個簡單的例子:x = [1, 2, 3, 4]y = [3, 5, 6, 8]xx, yy = np.meshgrid(x, y)>>> xxarray([[1, 2, 3, 4],
  • 使用Numpy進行深度學習中5大反向傳播優化算法的性能比較
    在本文中,我們將通過計算二次凸函數的最優點來數值比較主要的深度學習優化算法的性能。簡介深度學習被稱為人工智慧的未來。現在,神經網絡被稱為通用函數逼近器,也就是說,它們有能力表示這個宇宙中任何複雜的函數。計算這個具有數百萬個參數的通用函數的想法來自優化的基本數學。優化可以通過多種方式完成,但在本文中,我們將重點討論基於梯度下降的優化技術。
  • MATLAB中的數據插值函數
    griddata函數功能 數據格點格式(1)ZI = griddata(x,y,z,XI,YI)用二元函數z=f(x,y)的曲面擬合有不規則的數據向量x,y,z。griddata 將返回曲面z 在點(XI,YI)處的插值。曲面總是經過這些數據點(x,y,z)的。輸入參量(XI,YI)通常是規則的格點(像用命令meshgrid 生成的一樣)。
  • 圖解NumPy,這一篇就夠了
    在MATLAB處理這類問題的方法是創建一個meshgrid:該meshgrid函數接受任意一組索引,mgrid僅是切片,indices只能生成完整的索引範圍。fromfunction如上所述,僅使用I和J參數一次調用提供的函數。
  • 看圖學NumPy:掌握n維數組基礎知識點,看這一篇就夠了
    該meshgrid函數接受任意一組索引,mgrid僅是切片,indices只能生成完整的索引範圍。在沒有indexing=』ij』參數的情況下,meshgrid將更改參數的順序:J, I= np.meshgrid(j, i)—這是一種「 xy」模式,用於可視化3D圖。
  • NumPy初學教程,可視化指南
    從NumPy數組中獲取數據的另一種超級有用的方法是布爾索引,它允許使用各種邏輯運算符:meshgrid函數接受任意一組索引,mgrid僅是切片,indices並且只能生成完整的索引範圍。沒有indexing='ij'參數的情況下,meshgrid將更改參數的順序:J, I= np.meshgrid(j, i)—這是一種" xy"模式,用於可視化3D圖。
  • 9種常用的機器學習算法實現
    中的它將數據擬合到logit函數中,所以稱為logit回歸。簡單來說就是基於一組給定的變量,用logistic function來預測這個事件的概率,給出一個介於0和1之間的輸出。具體原理參考:用人話講明白邏輯回歸Logistic regression - 化簡可得的文章 - 知乎,下面給出代碼的實現。
  • 邊看圖,變學習,NumPy可視化初學教程
    通常可以使用zeros_like()函數創建一個空數組,以大小和元素類型匹配現有數組:創建以常量值填充的數組的函數都有一個對應的的_like函數:在NumPy中,對有序數組有兩個初始化函數:argnge()和lispace()如果需要類似的浮點數組,例如[0., 1., 2.]
  • Python:numpy總結(4)
    [-5 -2  1  4]      [-5 -2  1  4]]]mgrid函數說明:開始值,結束值,步長。-313   2.33419537e-313]int32[ 0  1  2  3  4  5  6  7  8  9 10 11][[ 0  1  2  3] [ 4  5  6  7] [ 8  9 10 11]]使用數組的方法函數tofile可以方便地將數組中數據以二進位的格式寫進文件。
  • NumPy完整剖析篇
    import numpy as npprint(np.empty(3)) print(np.empty((2, 3))) arange是python內置函數range的數組版import numpy as npprint(np.arange(1, 10,
  • 量子力學 | 函數圖像1
    其中包含大量陌生的函數,初學者會覺得難以完全掌握。但是,我們至少要對它們有一個直觀認識,並且在需要用到它們的時候,能從相應的教材中找到參考。例如:本文將展示在求解氫原子波函數時,我們需要用到的球諧函數[1],以及作為前置知識的勒讓德多項式[2]。讀者可以參考教材和原始碼,來理解各動圖的含義。
  • Python擴展庫numpy中where()函數的三種用法
    第一種用法:只給where()函數傳遞一個數組作為參數,返回其中非0元素的下標。
  • matlab標量函數的可視化
    matlab標量繪圖mesh or surf常見不多說,注意xy為網格坐標,mesh類有meshc,meshz;surf類有surfc,surflx=linspace(-2,2,25);y=linspace(-2,2,25);[xx,yy]=meshgrid(x,
  • 如果不懂 numpy,請別說自己是 python 程式設計師
    python 數組的元素則可以動態增減不同,numpy 數組中的元素都需要具有相同的數據類型,因此在內存中的大小相同。 python 數組則無此要求。numpy 數組的方法涵蓋了大量數學運算和複雜操作,許多方法在最外層的 numpy 命名空間中都有對應的映射函數。和 python 數組相比,numpy 數組的方法功能更強大,執行效率更高,代碼更簡潔。
  • 從numpy開啟Python數據科學之旅
    先簡單介紹了下小編學習Python主要方法和參考資料,很明顯今天的主題numpy是屬於第二個路徑的內容,下面就開始進入今天的正題。NumPy簡介    NumPy是Python中科學計算庫,其主要對象是包含同種元素的多維數組。在NumPy中數組的維度也叫做軸(axis),軸的個數叫做秩(rank)。