Сеточные функции сетки в Python (meshgrid mgrid ogrid ndgrid)



Я ищу четкое сравнение meshgrid функции. К сожалению, я не нахожу его!



включает в себя http://docs.scipy.org/doc/numpy/reference/ предоставляет




  • mgrid


  • ogrid


  • meshgrid



Scitools http://hplgit.github.io/scitools/doc/api/html/index.html обеспечивает




  • ndgrid


  • boxgrid



в идеале-таблица, суммирующая все это было бы прекрасно!

901   2  

2 ответов:

numpy.meshgrid моделируется после . Он используется для векторизации функций двух переменных, так что вы можете написать

x = numpy.array([1, 2, 3])
y = numpy.array([10, 20, 30]) 
XX, YY = numpy.meshgrid(x, y)
ZZ = XX + YY

ZZ => array([[11, 12, 13],
             [21, 22, 23],
             [31, 32, 33]])

так ZZ содержит все комбинации x и y поместить в функцию. Когда вы думаете об этом!--4--> немного излишне для массивов numpy, так как они транслируются. Это означает, что вы можете сделать

XX, YY = numpy.atleast_2d(x, y)
YY = YY.T # transpose to allow broadcasting
ZZ = XX + YY

и получить тот же результат.

mgrid и ogrid вспомогательные классы, которые используют индекс нотации, так что вы можете создать XX и YY в предыдущих примерах напрямую, без необходимости использовать что-то вроде linspace. Порядок, в котором генерируются выходные данные, реверсируется.

YY, XX = numpy.mgrid[10:40:10, 1:4]
ZZ = XX + YY # These are equivalent to the output of meshgrid

YY, XX = numpy.ogrid[10:40:10, 1:4]
ZZ = XX + YY # These are equivalent to the atleast_2d example

я не знаком с вещами scitools, но ndgrid похоже, что эквивалентно meshgrid, а BoxGrid на самом деле весь класс, чтобы помочь с такого рода поколения.

np.mgrid и np.meshgrid() сделать то же самое, но первая и вторая оси меняются местами:

# 3D
d1, d2, d3 = np.mgrid[0:10, 0:10, 0:10]
d11, d22, d33 = np.meshgrid(np.arange(10),np.arange(10),np.arange(10))
np.array_equal(d1,d11)

доходность False. Просто поменяйте местами первые два измерения:

d11 = np.transpose(d11,[1,0,2])
np.array_equal(d1,d11)

доходность True.

Comments

    Ничего не найдено.