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.