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.
Смотрите так же: meshgrid, mgrid

Примеры

>>> 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. ]]])