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