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:
Giới thiệu về numpy.meshgrid()
Hàm numpy.meshgrid()
trong thư viện NumPy của Python là một công cụ mạnh mẽ để tạo lưới đa chiều từ các vectơ đầu vào. Nó được sử dụng phổ biến trong việc chuẩn bị dữ liệu cho các phép tính trên lưới và trực quan hóa dữ liệu.
Khi làm việc với dữ liệu đa chiều, việc tạo ra lưới điểm là rất hữu ích để thực hiện các phép tính và trực quan hóa. Hàm numpy.meshgrid()
nhận vào một hoặc nhiều mảng 1D và trả về các mảng đa chiều mà mỗi một mảng đại diện cho một chiều trong không gian đa chiều. Các mảng đa chiều này có cùng hình dạng và kích thước, được tạo ra bằng cách sao chép và phối hợp các giá trị từ các mảng 1D ban đầu.
Thông qua việc tạo lưới đa chiều, hàm numpy.meshgrid()
cho phép ta thực hiện các phép tính trên tất cả các điểm trong lưới một cách dễ dàng. Nó tạo ra một ma trận lưới đa chiều mà mỗi phần tử đại diện cho một điểm trong lưới. Điều này rất hữu ích trong các bài toán tính toán số học, khoa học và trực quan hóa dữ liệu.
Hàm numpy.meshgrid()
được sử dụng rộng rãi trong các lĩnh vực như xử lý hình ảnh, đồ họa máy tính, phân tích dữ liệu khoa học, tính toán số học và machine learning.
Tóm lại, hàm numpy.meshgrid()
trong NumPy cho phép tạo lưới đa chiều từ các vectơ đầu vào, giúp thực hiện các phép tính trên lưới và trực quan hóa dữ liệu một cách thuận tiện và hiệu quả.
Xem thêm Cơ sở toán học của lattice trong cryptography
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() trong Python
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 trong numpy.meshgrid()
X1, X2,…, Xn
Độ dài tọa độ từ vectơ tọa độ được trả về từ hàm này.
Xem thêm Lattice-based signature schemes
Cách sử dụng numpy.meshgrid()
Hàm numpy.meshgrid()
trong thư viện NumPy của Python được sử dụng để tạo lưới đa chiều từ các vectơ đầu vào. Dưới đây là cách sử dụng cơ bản của hàm numpy.meshgrid()
:
import numpy as np # Tạo các vectơ đầu vào x = np.array([1, 2, 3]) y = np.array([4, 5, 6]) # Sử dụng numpy.meshgrid() để tạo lưới đa chiều X, Y = np.meshgrid(x, y) # X và Y là các mảng đa chiều có cùng kích thước và hình dạng # Mỗi phần tử của X đại diện cho một điểm trên lưới theo trục x # Mỗi phần tử của Y đại diện cho một điểm trên lưới theo trục y # In ra các giá trị trên lưới print(X) print(Y)
Kết quả:
[[1 2 3] [1 2 3] [1 2 3]] [[4 4 4] [5 5 5] [6 6 6]]
Trong ví dụ trên, chúng ta tạo hai vectơ x
và y
với 3 phần tử mỗi vectơ. Sau đó, chúng ta sử dụng hàm numpy.meshgrid(x, y)
để tạo lưới đa chiều. Kết quả là hai mảng X
và Y
có cùng kích thước và hình dạng. Mỗi phần tử của X
đại diện cho một điểm trên lưới theo trục x, trong khi mỗi phần tử của Y
đại diện cho một điểm trên lưới theo trục y.
Xem thêm Sử dụng tính toán Vector trong R
Bạn có thể sử dụng các mảng X
và Y
để thực hiện các phép tính trên lưới hoặc trực quan hóa dữ liệu theo ý muốn.
Lưu ý rằng hàm numpy.meshgrid()
cũng cho phép tạo lưới đa chiều từ nhiều vectơ đầu vào. Bạn có thể truyền vào một danh sách các vectơ để tạo ra một lưới đa chiều có số chiều tương ứng với số vectơ đầu vào.
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 độ.
Xem thêm Pytorch vector operation
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ẽ.
Xem thêm Các chức năng vẽ của OpenCv
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:
Xem thêm Hàm R Vectơ- hướng dẫn cơ bản đến nâng cao