Функция meshgrid
Функция meshgrid создаёт координатную сетку из одномерных массивов, представляющих координаты по каждой оси. Она возвращает набор массивов, соответствующих каждой координатной оси, которые затем можно использовать для вычисления скалярных полей на всей сетке. Первым и вторым параметром передаются одномерные массивы координат по осям X и Y. Параметр indexing определяет порядок индексации: 'xy' (декартова, по умолчанию) или 'ij' (матричная). Параметр sparse позволяет создать разреженную сетку для экономии памяти.
Синтаксис
np.meshgrid(*xi, indexing='xy', sparse=False)
Пример
Давайте создадим сетку координат из двух одномерных массивов:
import numpy as np
x = np.array([1, 2, 3])
y = np.array([4, 5])
X, Y = np.meshgrid(x, y)
print("X:")
print(X)
print("Y:")
print(Y)
Результат выполнения кода:
X:
[[1 2 3]
[1 2 3]]
Y:
[[4 4 4]
[5 5 5]]
Пример
Выполним вычисление функции на всей сетке:
import numpy as np
x = np.linspace(-2, 2, 5)
y = np.linspace(-2, 2, 5)
X, Y = np.meshgrid(x, y)
Z = X**2 + Y**2
print(Z)
Результат выполнения кода:
[[8. 5. 4. 5. 8.]
[5. 2. 1. 2. 5.]
[4. 1. 0. 1. 4.]
[5. 2. 1. 2. 5.]
[8. 5. 4. 5. 8.]]
Пример
Используем параметр indexing='ij' для матричной индексации:
import numpy as np
x = np.array([1, 2, 3])
y = np.array([4, 5])
X, Y = np.meshgrid(x, y, indexing='ij')
print("X:")
print(X)
print("Y:")
print(Y)
Результат выполнения кода:
X:
[[1 1]
[2 2]
[3 3]]
Y:
[[4 5]
[4 5]
[4 5]]
Пример
Создадим трёхмерную сетку с помощью трёх массивов координат:
import numpy as np
x = np.array([1, 2])
y = np.array([3, 4])
z = np.array([5, 6])
X, Y, Z = np.meshgrid(x, y, z, indexing='ij')
print("X shape:", X.shape)
print(X)
Результат выполнения кода:
X shape: (2, 2, 2)
[[[1 1]
[1 1]]
[[2 2]
[2 2]]]
Пример
Используем разреженную сетку для экономии памяти:
import numpy as np
x = np.array([1, 2, 3, 4])
y = np.array([5, 6, 7])
X, Y = np.meshgrid(x, y, sparse=True)
print("X (sparse):")
print(X)
print("Y (sparse):")
print(Y)
Результат выполнения кода:
X (sparse):
[[1 2 3 4]]
Y (sparse):
[[5]
[6]
[7]]
Смотрите также
-
функцию
linspace,
которая создаёт массив равномерно распределённых чисел -
функцию
arange,
которая создаёт массив из диапазона чисел -
функцию
fromfunction,
которая создаёт массив, вычисляя значения по индексам -
функцию
ones,
которая создаёт массив, заполненный единицами