Estoy buscando una clara comparación de meshgrid de funciones similares. Por desgracia, yo no la encuentro!

Numpy http://docs.scipy.org/doc/numpy/reference/ proporciona

  • mgrid

  • ogrid

  • meshgrid

Scitools http://hplgit.github.io/scitools/doc/api/html/index.html proporciona

  • ndgrid

  • boxgrid

Idealmente una tabla que resume todo esto sería perfecto!

InformationsquelleAutor scls | 2012-09-13

2 Comentarios

  1. 72

    numpy.meshgrid se modela después de Matlab meshgrid comando. Se utiliza para vectorise funciones de dos variables, de modo que usted puede escribir

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

    Así ZZ contiene todas las combinaciones de x y y puesto en la función. Cuando usted piensa acerca de ello, meshgrid es un poco superfluo para arrays de numpy, como de difusión. Esto significa que usted puede hacer

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

    y obtener el mismo resultado.

    mgrid y ogrid son clases auxiliares que índice del uso de la notación de modo que usted puede crear XX y YY en los ejemplos anteriores directamente, sin tener que usar algo como linspace. El orden en el que la salida se generan se invierte.

    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

    Yo no estoy familiarizado con el scitools cosas, pero ndgrid parece equivalente a meshgrid, mientras que BoxGrid es en realidad un conjunto de clases para ayudar con este tipo de generación.

    • Gracias por su respuesta. Pero no entiendo lo que debo usar si tengo 3 parámetros (o más) vamos llamado x1, x2, x3 !
    • Meshgrid es explícitamente en 2D. Los demás todo el apoyo de más dimensiones. Que en realidad iba a explicar la existencia de ndgrid.
    • Los resultados de meshgrid y mgrid son diferentes. Sólo trate de mgrid[1:4, 1:4] y meshgrid([1,2,3], [1,2,3]).
    • En la segunda sección donde hacer XX = XX.T realmente debe ser YY = YY.T. Esto se hace evidente si x e y son diferentes.
  2. 2

    np.mgrid y np.meshgrid() hacer lo mismo, pero el primero y el segundo eje se intercambian:

    # 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)

    rendimientos False. Intercambia las dos primeras dimensiones:

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

    rendimientos True.

Dejar respuesta

Please enter your comment!
Please enter your name here