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

2021-09-02 19:17:42 字數 2492 閱讀 7093

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

yout:

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

yout:

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中進行視覺化,來檢視函式執行後得到的網格化資料的結果

當然,我們也可以獲得網格平面上座標點的資料,如下:

z = [i for i in zip(x.flat,y.flat)]

zout:

[(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函式常用的場景有等高線繪製及機器學習中svc超平面的繪製(二維場景下)。

分別圖示如下:

(1)等高線

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

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

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

numpy中meshgrid的使用

meshgrid函式通常在資料的向量化上使用,但是使用的方法我暫時還不是很明確。而meshgrid的作用適用於生成網格型資料,可以接受兩個一維陣列生成兩個二維矩陣,對應兩個陣列中所有的 x,y 對 接下來通過簡單的shell互動來演示一下這個功能的使用,並做一下小結。互動顯示 in 65 xnums...

numpy的生成網格矩陣 meshgrid

numpy模組中的meshgrid函式用來生成網格矩陣,最簡單的網格矩陣為二維矩陣 meshgrid函式可以接受 x1,x2,xn 等 n 個一維向量,生成 n d 矩陣。meshgrid xi,kwargs 引數 xi x1,x2,xn array like 返回值 x1,x2,xn ndarra...

Python中numpy庫unique函式解析

a np.unique a 對於一維陣列或者列表,unique函式去除其中重複的元素,並按元素由大到小返回乙個新的無元素重複的元組或者列表。import numpy as np a 1,2,2,5,3,4,3 a np.unique a b 1,2,2,5,3,4,3 b np.unique b c...