Spec-Zone.ru › NumPy 2.0

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()
../../_images/numpy-meshgrid-1_00_00.png

Можно создавать разреженные массивы вывода для экономии памяти и времени вычислений.

>>> 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()
../../_images/numpy-meshgrid-1_01_00.png

© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.meshgrid.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API