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