當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python numpy.meshgrid()用法及代碼示例

Python 的 numpy 模塊提供了 meshgrid() 函數,用於在給定的表示矩陣索引或笛卡爾索引的一維數組的幫助下創建矩形網格。 MATLAB 在某種程度上啟發了 meshgrid() 函數。 meshgrid() 函數根據坐標向量返回坐標矩陣。

numpy.meshgrid()

在上圖中,x軸的範圍是-5到5,y軸的範圍是-5到5。所以,圖中總共標記了121個點,每個點都有x坐標和y 坐標。對於任何平行於x軸的直線,標記點的x-coordinates分別為-5、-4、-3、-2、-1、0、1、2、3、4和5。另一方麵,對於任何平行於y軸的直線,從下到上標記點的y-coordinates為-5、-4、-3、-2、-1、0、1、2、3、4 , 和 5 分別。

用法

numpy.meshgrid(*xi, **kwargs)

參數

x1, x2,‌, xn:數組

此參數定義一維數組,表示網格的坐標。

索引:{'xy', 'ij'}(可選)

這是一個可選參數,用於定義輸出的笛卡爾 'xy'(默認情況下)或矩陣 ('ij') 索引。

稀疏:布爾(可選)

該參數也是可選的。如果我們需要一個稀疏網格來節省內存,我們必須將此參數設置為 True。默認情況下,它設置為 False。

複製:布爾(可選)

此可選參數的目的是返回原始數組的副本以節省內存。默認情況下,它設置為 False。

如果 sparse 和 copy 參數都設置為 False,那麽它將返回非連續數組。此外,廣播數組的多個元素可以引用單個內存位置。如果我們需要寫入數組,那麽我們必須先進行複製。

返回

X1, X2, ‌, Xn

此函數返回坐標向量的坐標長度。

範例1:

import numpy as np
na, nb = (5, 3)
a = np.linspace(1, 2, na)
b = np.linspace(1, 2, nb)
xa, xb = np.meshgrid(a, b)
xa
xb

輸出:

array([[1.  , 1.25, 1.5 , 1.75, 2.  ],
       	[1.  , 1.25, 1.5 , 1.75, 2.  ],
       	[1.  , 1.25, 1.5 , 1.75, 2.  ]])
array([[1. , 1. , 1. , 1. , 1. ],
       	[1.5, 1.5, 1.5, 1.5, 1.5],
       	[2. , 2. , 2. , 2. , 2. ]])

在上麵的代碼中

  • 我們已經導入了別名為 np.
  • 我們創建了兩個變量,即 na 和 nb,並分別賦值為 5 和 3。
  • 我們使用 linspace() 函數創建了兩個數組,即 a 和 b。
  • 之後,我們聲明了變量 'xa' 和 'xb' 並賦值了 meshgrid() 的返回值
  • 我們已經在函數中傳遞了數組 'a' 和 'b'
  • 最後,我們嘗試打印 'xa' 和 'xb' 的值。

在輸出中,顯示了兩個數組,其中包含坐標向量的坐標長度。

範例2:

import numpy as np
na, nb = (5, 3)
a = np.linspace(1, 2, na)
b = np.linspace(1, 2, nb)
xa, xb = np.meshgrid(a, b, sparse=True)
xa
xb

輸出:

array([[1.  , 1.25, 1.5 , 1.75, 2.  ]])
array([[1. ],
       	[1.5],
       	[2. ]])

範例3:

import numpy as np
import matplotlib.pyplot as plt
a = np.arange(-10, 10, 0.1)
b = np.arange(-10, 10, 0.1)
xa, xb = np.meshgrid(a, b, sparse=True)
z = np.sin(xa**2 + xb**2) / (xa**2 + xb**2)
h = plt.contourf(a,b,z)
plt.show()

輸出:

numpy.meshgrid()

在上麵的代碼中

  • 我們已經導入了別名為 np.
  • 我們已將 matplotlib.pyplot 作為 plt 導入。
  • 我們使用 np.arange() 函數創建了兩個數組,即 a 和 b。
  • 之後,我們聲明了變量 'xa' 和 'xb' 並賦值了 meshgrid() 的返回值
  • 我們已經在函數中傳遞了數組 'a' 和 'b'。
  • 之後,我們聲明了一個變量 z 並分配了 np.sine() 函數的返回值。
  • 最後,我們嘗試使用 plt.contourf() 繪製輪廓線和填充輪廓

在輸出中,繪製了等高線。

範例4:

import numpy as np
import matplotlib.pyplot as plt
a = np.linspace(-5, 5, 5)
b = np.linspace(-5, 5, 11)
random_data = np.random.random((11, 5))
xa, xb = np.meshgrid(a, b)
plt.contourf(xa, xb, random_data, cmap = 'jet')
plt.colorbar()
plt.show()

輸出:

numpy.meshgrid()

範例5:

import numpy as np
import matplotlib.pyplot as plt
a = np.linspace(-5, 5, 5)
b = np.linspace(-5, 5, 11)
random_data = np.random.random((11, 5))
xa, xb = np.meshgrid(a, b)
sine = (np.sin(xa**2 + xb**2))/(xa**2 + xb**2)
plt.contourf(xa, xb, sine, cmap = 'jet')
plt.colorbar()
plt.show()

輸出:

numpy.meshgrid()



相關用法


注:本文由純淨天空篩選整理自 numpy.meshgrid() in Python。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。