numpy.meshgrid()
Функция numpy.meshgrid() создаёт прямоугольную координатную сетку из одномерных векторов. Незаменима для вычисления значений функций двух переменных и построения 3D-поверхностей через matplotlib.
Сигнатура
numpy.meshgrid(*xi, copy=True, sparse=False, indexing='xy')
Параметры
*xi— одномерные массивы координат по каждой оси.copy— копировать данные или нет.sparse— возвращать разреженные сетки (экономит память).indexing—'xy'(декартова) или'ij'(матричная) индексация.
Возвращает
Кортеж из ndarray — координатные матрицы по каждой оси.
Пример 1. Простая 3×4 сетка
import numpy as np
x = np.array([1, 2, 3, 4])
y = np.array([10, 20, 30])
X, Y = np.meshgrid(x, y)
print(X)
print(Y)
[[1 2 3 4]
[1 2 3 4]
[1 2 3 4]]
[[10 10 10 10]
[20 20 20 20]
[30 30 30 30]]
Пример 2. Значения функции f(x, y)
import numpy as np
x = np.array([0, 1, 2])
y = np.array([0, 1, 2])
X, Y = np.meshgrid(x, y)
Z = X**2 + Y**2
print(Z)
[[0 1 4]
[1 2 5]
[4 5 8]]
Пример 3. Разреженная сетка
import numpy as np
x = np.array([1, 2, 3])
y = np.array([4, 5])
X, Y = np.meshgrid(x, y, sparse=True)
print(X.shape, Y.shape)
(1, 3) (2, 1)
Разреженная форма экономит память для больших сеток.
Пример 4. Индексация „ij“
import numpy as np
x = np.array([1, 2, 3])
y = np.array([10, 20])
X, Y = np.meshgrid(x, y, indexing='ij')
print(X.shape)
(3, 2)
Режим ij использует матричную индексацию (строки, столбцы).
Пример 5. Карта высот для рельефа
import numpy as np
# Сетка 5x5 в диапазоне [-2, 2]
t = np.linspace(-2, 2, 5)
X, Y = np.meshgrid(t, t)
H = np.exp(-(X**2 + Y**2)) # «холм»
print(np.round(H, 2))
[[0. 0.02 0.02 0.02 0. ]
[0.02 0.37 0.61 0.37 0.02]
[0.02 0.61 1. 0.61 0.02]
[0.02 0.37 0.61 0.37 0.02]
[0. 0.02 0.02 0.02 0. ]]
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации NumPy (https://numpy.org/doc/stable/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.