Ответ 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
- это действительно целый класс, который поможет в этом генерации.