Подтвердить что ты не робот

Функции сетки сетки в Python (meshgrid mgrid ogrid ndgrid)

Я ищу четкое сравнение функций, подобных meshgrid. К сожалению, я не нахожу это!

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

  • mgrid

  • ogrid

  • meshgrid

Scitools http://hplgit.github.io/scitools/doc/api/html/index.html предоставляет

  • ndgrid

  • boxgrid

В идеале таблица, суммирующая все это, была бы идеальной!

4b9b3361

Ответ 1

numpy.meshgrid моделируется после команды Matlab 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]])

So ZZ содержит все комбинации x и y, помещенные в функцию. Когда вы думаете об этом, meshgrid немного лишнее для массивов 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 - это действительно целый класс, который поможет в этом генерации.