python中grid函数_Python-Numpy模块Meshgrid函数
Numpy中關于Meshgrid函數:meshgrid官方。
1.Meshgrid前言
meshgrid函數就是用兩個坐標軸上的點在平面上畫網格(當然這里傳入的參數是兩個的時候)。當然我們可以指定多個參數,比如三個參數,那么我們的就可以用三個一維的坐標軸上的點在三維平面上畫網格。
2.Meshgrid的參數numpy.meshgrid(* xi,** kwargs ) 。array_like代表網格坐標的一維數組,這里可以傳入多個一維數組的值。但是這里需要注意的就是如果我們給傳入的是一個矩陣(多維數組)的話,他會自動把這個矩陣轉換成一維數組;
索引(indexing):('xy'[笛卡爾],'ij'[矩陣]),可選。默認是'xy',下面會詳細解釋一下;
稀疏(sparse):bool,可選。默認為False。如果為True為了節省內存會返回一個稀疏矩陣;
復制(copy):bool,可選。默認為True。如果為False則為了節省內存返回源始的視圖。
返回值: :ndarray。對于二維數組來說,我們的參數是
兩個一維數組,我們設
形狀為N,
的形狀為M。那么他的返回值是一個list列表,里面存放著兩個矩陣,我們可以通過解包操作來獲取
與
兩個矩陣,這里的返回值
,
。我們指定了indexing參數,如果indexing = 'xy'(默認)我們返回的
與
矩陣的形狀是(M,N);如果indexing = 'ij'的話我們返回的
與
矩陣的形狀就是(N,M)。
3.indexing參數
上面介紹了indexing參數有兩個值'xy'和'ij',默認值為'xy'。那他們兩個之間有什么區別呢?其中'xy'代表的是笛卡爾,'ij'代表的是矩陣。我們直接通過結果來看。
import numpy as np
x = np.array([1,2,3])
y = np.array([4,5,6,7])
xv,yv = np.meshgrid(x,y,indexing = 'xy')
xv2,yv2 = np.meshgrid(x,y,indexing = 'ij')
print('-----向量的形狀-----')
print(x.shape)
print(y.shape)
print('-----xy-----')
print(xv.shape)
print(yv.shape)
print('-----ij-----')
print(xv2.shape)
print(yv2.shape)
-----向量的形狀-----
(3,)
(4,)
-----xy-----
(4, 3)
(4, 3)
-----ij-----
(3, 4)
(3, 4)
從上面我們可以看出,對于二維數組來說,對于兩個長度為3和4的一維數組,我們設N = 3 ,M = 4。對于我們indexing = 'xy'(默認)來說,得到xv以及yv矩陣的形狀是(M,N)也就是(4,3);那對于indexing = 'ij'我們的xv以及yv矩陣的形狀是(N,M)也就是(3,4)。
那對于三維來說,參數是三個一維數組,并且一維數組的形狀分別是N,M,P,那么如果indexing = 'xy'的話返回的三個矩陣xv,yv,zv的形狀都是(M,N,P);如果indexing = 'ij'的話返回的是三個矩陣xv,yv,zv的形狀都是(N,M,P)
import numpy as np
x = np.array([1,2,3])
y = np.array([4,5,6,7])
xv, yv = np.meshgrid(x, y, sparse=False, indexing='ij')
for i in zip(xv.flat,yv.flat):
print(i)
print('----------')
xv, yv = np.meshgrid(x, y, sparse=False, indexing='xy')
for i in zip(xv.flat,yv.flat):
print(i)運行結果
4.如何使用xv,yv = meshgrid(x,y)
xv,yv = meshgrid(x)與xv,yv = meshgrid(x,x)是等同的
xv,yv,zv = meshgrid(x,y,z)生成三維數組,可用來計算三變量的函數和繪制三維立體圖
上面的這些都是直接進行解包后的返回值。其實他返回的是一個list列表,列表中存放的xv,yv,zv的這些numpy數組。
import numpy as np
x = np.array([1,2,3]) #X_{x} = 3
y = np.array([4,5,6,7]) #X_{y} = 4
xv,yv = np.meshgrid( x , y )
print(xv)
print(yv)
[[1 2 3]
[1 2 3]
[1 2 3]
[1 2 3]]
[[4 4 4]
[5 5 5]
[6 6 6]
[7 7 7]]
我們通過對兩個參數來一步一步的分析來看,看得到的結果是如何變成一個網格的:x:表示我們的一維向量(1,2,3),他的N = 3
y:表示我們的一維向量(4,5,6,7),他的N = 4
xv:表示x坐標軸上的坐標矩陣
yv:表示y坐標軸上的坐標矩陣
x = np.array([1,2,3]) #x = (x1,x2,x3)
y = np.array([4,5,6,7]) #y = (y1,y2,y3,y4)
xv,yv = np.meshgrid( x , y )xv矩陣
我們把我們的一維向量
看成了
,我們也可以看上面我輸出的xv[[1 2 3]
[1 2 3] [1 2 3] [1 2 3]],如果看成是
,也就是4個向量,如圖所示。yv矩陣
我們把我們的y向量看成了
,然后我們從上面的打印出來的結果[[4 4 4] [5 5 5][6 6 6] [7 7 7]],我們的向量被豎著放起,然后推廣成三列。正如我們的yv矩陣所示。
我們的兩個一維數組形成的網格,我們就可以通過上面的分析得到:網格化數據左邊與其對應值
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的python中grid函数_Python-Numpy模块Meshgrid函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python pip国内源_Python
- 下一篇: mips j指令_MIPS处理器 MIP