numpy.meshgrid
- numpy.meshgrid(*xi, copy=True, sparse=False, indexing='xy')[source]
-
Возвращает кортеж матриц координат из координатных векторов.
Создаёт N-мерные массивы координат для векторного вычисления N-мерных скалярных/векторных полей на N-мерных сетках, заданных одномерными массивами координат x1, x2,…, xn.
Изменено в версии 1.9: Допускаются 1-мерные и 0-мерные случаи.
- Параметры:
-
- x1, x2,…, xnarray_like
-
Одномерные массивы, представляющие координаты сетки.
- indexing{‘xy’, ‘ij’}, optional
-
Декартовы (‘xy’, по умолчанию) или матричные (‘ij’) индексы вывода. Дополнительные сведения см. в Примечаниях.
Добавлена в версии 1.7.0.
- sparsebool, optional
-
Если True, форма возвращаемого массива координат для измерения i уменьшается с
(N1, ..., Ni, ... Nn)до(1, ..., 1, Ni, 1, ..., 1). Эти разреженные координатные сетки предназначены для использования с Распространением. Когда все координаты используются в выражении, векторизация всё равно приводит к массиву результатов с полной размерностью.Значение по умолчанию False.
Добавлена в версии 1.7.0.
- copybool, optional
-
Если False, возвращаются представления исходных массивов для экономии памяти. По умолчанию True. Обратите внимание, что
sparse=False, copy=Falseвероятнее всего вернёт несмежные массивы. Кроме того, более чем один элемент массива с векторизацией может ссылаться на одно место в памяти. Если вам нужно записать в массивы, сделайте копии сначала.Добавлена в версии 1.7.0.
- Возвращает:
-
- X1, X2,…, XNtuple of ndarrays
-
Для векторов
x1,x2,…,xnс длинамиNi=len(xi), возвращает массивы формы(N1, N2, N3,..., Nn)если indexing=’ij’ или массивы формы(N2, N1, N3,..., Nn)если indexing=’xy’ с элементамиxi, повторяющиеся для заполнения матрицы по первому измерению дляx1, второго дляx2и так далее.
См. также
mgrid-
Конструирует N-мерную «сетку» с использованием индексной нотации.
ogrid-
Конструирует открытую N-мерную «сетку» с использованием индексной нотации.
- Индексирование N-мерных массивов
Примечания
Эта функция поддерживает обе конвенции индексирования через параметр indexing. Если строка ‘ij’, возвращается сетка с матричным индексированием, а ‘xy’ — с декартовым индексированием. В двумерном случае с входными данными длины M и N выходные данные имеют форму (N, M) для индексирования ‘xy’ и (M, N) для индексирования ‘ij’. В трёхмерном случае с входными данными длины M, N и P выходные данные имеют форму (N, M, P) для индексирования ‘xy’ и (M, N, P) для индексирования ‘ij’. Разница проиллюстрирована в следующем фрагменте кода:
xv, yv = np.meshgrid(x, y, indexing='ij') for i in range(nx): for j in range(ny): # treat xv[i,j], yv[i,j] xv, yv = np.meshgrid(x, y, indexing='xy') for i in range(nx): for j in range(ny): # treat xv[j,i], yv[j,i]В одномерном и нульмерном случаях параметры indexing и sparse не имеют эффекта.
Примеры
>>> nx, ny = (3, 2) >>> x = np.linspace(0, 1, nx) >>> y = np.linspace(0, 1, ny) >>> xv, yv = np.meshgrid(x, y) >>> xv array([[0. , 0.5, 1. ], [0. , 0.5, 1. ]]) >>> yv array([[0., 0., 0.], [1., 1., 1.]])Результат
meshgridпредставляет собой координатную сетку:>>> import matplotlib.pyplot as plt >>> plt.plot(xv, yv, marker='o', color='k', linestyle='none') >>> plt.show()
Можно создавать разреженные массивы вывода для экономии памяти и времени вычислений.
>>> xv, yv = np.meshgrid(x, y, sparse=True) >>> xv array([[0. , 0.5, 1. ]]) >>> yv array([[0.], [1.]])meshgridочень полезен для вычисления функций на сетке. Если функция зависит от всех координат, можно использовать как плотные, так и разреженные выходные данные.>>> x = np.linspace(-5, 5, 101) >>> y = np.linspace(-5, 5, 101) >>> # full coordinate arrays >>> xx, yy = np.meshgrid(x, y) >>> zz = np.sqrt(xx**2 + yy**2) >>> xx.shape, yy.shape, zz.shape ((101, 101), (101, 101), (101, 101)) >>> # sparse coordinate arrays >>> xs, ys = np.meshgrid(x, y, sparse=True) >>> zs = np.sqrt(xs**2 + ys**2) >>> xs.shape, ys.shape, zs.shape ((1, 101), (101, 1), (101, 101)) >>> np.array_equal(zz, zs) True
>>> h = plt.contourf(x, y, zs) >>> plt.axis('scaled') >>> plt.colorbar() >>> plt.show()
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.meshgrid.html