numpy.meshgrid() trong Python – w3seo hướng dẫn sử dụng chi tiết

Rate this post

Mô-đun numpy của Python cung cấp hàm meshgrid () để tạo lưới hình chữ nhật với sự trợ giúp của các mảng 1-D đã cho đại diện cho lập chỉ mục Ma trận hoặc lập chỉ mục Đề-các. MATLAB phần nào truyền cảm hứng cho hàm meshgrid (). Từ các vectơ tọa độ, hàm meshgrid () trả về các ma trận tọa độ.

Các bài viết liên quan:

Trong hình trên, trục x nằm trong khoảng từ -5 đến 5 và trục y nằm trong khoảng từ -5 đến 5. Vì vậy, có tổng cộng 121 điểm được đánh dấu trong hình, mỗi điểm có tọa độ x và tọa độ y. Đối với bất kỳ đường thẳng nào song song với trục x, tọa độ x của các điểm được đánh dấu lần lượt là -5, -4, -3, -2, -1, 0, 1, 2, 3, 4 và 5. Mặt khác, đối với bất kỳ đường thẳng nào song song với trục y, tọa độ y của các điểm được đánh dấu từ dưới lên trên là -5, -4, -3, -2, -1, 0, 1, 2, 3 , 4 và 5 tương ứng.

Cú pháp

numpy.meshgrid (* xi, ** kwargs)

Tham số

x1, x2,…, xn : array_like

Tham số này xác định mảng 1 chiều, đại diện cho tọa độ của lưới.

indexing: {‘xy’, ‘ij’}(optional)

Đây là một đối số tùy chọn xác định chỉ số Descartes ‘xy’ (theo mặc định) hoặc ma trận (‘ij’) của đầu ra.

sparse: bool(optional)

Tham số này cũng là tùy chọn. Nếu chúng ta cần một lưới thưa thớt để bảo tồn bộ nhớ, chúng ta phải đặt tham số này thành True. Theo mặc định, nó được đặt thành Sai.

copy: bool(optional)

Mục đích của đối số tùy chọn này là nó trả về một bản sao của mảng ban đầu để bảo toàn bộ nhớ. Theo mặc định, nó được đặt thành Sai.

Nếu cả hai tham số thưa thớt và sao chép được đặt thành False, thì nó sẽ trả về các mảng không liền kề. Ngoài ra, nhiều phần tử của một mảng quảng bá có thể tham chiếu đến một vị trí bộ nhớ duy nhất. Nếu chúng ta cần ghi vào các mảng, thì trước tiên chúng ta phải tạo bản sao.

Return

X1, X2,…, Xn

Độ dài tọa độ từ vectơ tọa độ được trả về từ hàm này.

Ví dụ 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  

Output:

Trong đoạn code trên

  • Chúng tôi đã tạo hai biến, tức là na và nb, và gán các giá trị 5 và 3 tương ứng.
  • Chúng ta đã tạo hai mảng, tức là a và b bằng cách sử dụng hàm linspace ().
  • Sau đó, chúng tôi đã khai báo các biến ‘xa’ và ‘xb’ và gán giá trị trả về của meshgrid ()
  • Chúng tôi đã chuyển cả hai mảng ‘a’ và ‘b’ trong hàm
  • Cuối cùng, chúng tôi đã cố gắng in giá trị của ‘xa’ và ‘xb’.
  • Trong đầu ra, hai mảng đã được hiển thị chứa độ dài tọa độ từ các vectơ tọa độ.

Ví dụ 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 

Output:

Ví dụ 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()  

Output:

Trong đoạn code trên

  • Chúng tôi đã nhập matplotlib.pyplot dưới dạng plt.
  • Chúng tôi đã tạo hai mảng, tức là a và b bằng cách sử dụng hàm np.arange ().
  • Sau đó, chúng tôi đã khai báo các biến ‘xa’ và ‘xb’ và gán giá trị trả về của meshgrid ()
  • Chúng tôi đã chuyển cả hai mảng ‘a’ và ‘b’ trong hàm.
  • Sau đó, chúng ta đã khai báo một biến z và gán giá trị trả về của hàm np.sine ().
  • Cuối cùng, chúng tôi đã cố gắng vẽ các đường đồng mức và các đường viền đã tô bằng cách sử dụng plt.contourf ()

Trong đầu ra, các đường đồng mức đã được vẽ.

Ví dụ 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()  

Đầu ra:

Ví dụ 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()  

Output: