numpy.mgrid
numpy.mgrid[index object] = <numpy.lib.index_tricks.nd_grid object>
Функция mgrid() возвращает массив плотных координатных сеток N-мерного координатного пространства для указанных в виде диапазонов одномерных массивов координатных векторов.
-
- index object - объект индексации
- Под объектом индексации понимается список из двух или трех элементов, например [0:5] или [0:5:10j]. Если элементов в списке всего два, то это интерпретируется как полуоткрытый интервал [start, ... , stop), в котором все элементы отличаются на 1, а значение stop в сам интервал не входит. В качестве третьего элемента указывается мнимая часть комплексного числа, которое указывает на количество равномерно разнесенных элементов внутри закрытого интервала [start, ... , stop], при этом значение stop попадает в интервал.
-
- результат - массив NumPy
- Массив плотных координатных сеток N-мерного координатного пространства, количество и размеры которых зависят от указанных диапазонов.
Примеры
>>> import numpy as np
>>>
>>> np.mgrid[0:4, 4:8]
array([[[0, 0, 0, 0],
[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3]],
[[4, 5, 6, 7],
[4, 5, 6, 7],
[4, 5, 6, 7],
[4, 5, 6, 7]]])
>>>
>>> np.mgrid[0:0.9:10j]
array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
>>>
>>> np.mgrid[0:15:6j]
array([ 0., 3., 6., 9., 12., 15.])
>>>
>>> np.mgrid[0:0.8:5j, 0:15:4j]
array([[[ 0. , 0. , 0. , 0. ],
[ 0.2, 0.2, 0.2, 0.2],
[ 0.4, 0.4, 0.4, 0.4],
[ 0.6, 0.6, 0.6, 0.6],
[ 0.8, 0.8, 0.8, 0.8]],
[[ 0. , 5. , 10. , 15. ],
[ 0. , 5. , 10. , 15. ],
[ 0. , 5. , 10. , 15. ],
[ 0. , 5. , 10. , 15. ],
[ 0. , 5. , 10. , 15. ]]])
>>>
>>>
>>> x, y = np.mgrid[0:0.8:5j, 0:15:4j]
>>> x
array([[ 0. , 0. , 0. , 0. ],
[ 0.2, 0.2, 0.2, 0.2],
[ 0.4, 0.4, 0.4, 0.4],
[ 0.6, 0.6, 0.6, 0.6],
[ 0.8, 0.8, 0.8, 0.8]])
>>> y
array([[ 0., 5., 10., 15.],
[ 0., 5., 10., 15.],
[ 0., 5., 10., 15.],
[ 0., 5., 10., 15.],
[ 0., 5., 10., 15.]])
Замечание
Функции meshgrid
, mgrid
и ogrid
очень похожи друг на друга. meshgrid
является самой гибкой, mgrid
выдает только плотные массивы координатных сеток, а ogrid
только сжатые до одной оси. При этом функция mgrid
может быть легко переопределена в функцию ogrid
:
>>> np.mgrid = np.lib.index_tricks.nd_grid(sparse=True)
>>>
>>> np.mgrid[0:0.8:5j, 0:15:4j]
[array([[ 0. ],
[ 0.2],
[ 0.4],
[ 0.6],
[ 0.8]]), array([[ 0., 5., 10., 15.]])]
>>>
>>> np.ogrid[0:0.8:5j, 0:15:4j]
[array([[ 0. ],
[ 0.2],
[ 0.4],
[ 0.6],
[ 0.8]]), array([[ 0., 5., 10., 15.]])]