es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Seleccionando el arreglo con el promedio más alto.

Con xarray, puedo definir una matriz tridimensional:

array = xr.DataArray(
[[[3, 2, 1], [3, 1, 2], [2, 1, 3]], [[1, 3, 2], [2, 5, 1], [2, 3, 1]]],
dims=(“x”, “y”, “z”))

array
<xarray.DataArray (x: 2, y: 3, z: 3)>
array([[[3, 2, 1],
[3, 1, 2],
[2, 1, 3]],
[[1, 3, 2],
[2, 5, 1],
[2, 3, 1]]])
Dimensions without coordinates: x, y, z

De esta matriz tridimensional, quiero seleccionar la capa de matriz bidimensional con la media más alta de valores.

Intenté esto:

max_layer = array.max(dim=’x’)

Esto no funciona. Python crea una nueva matriz bidimensional con los valores más altos a lo largo del eje x en lugar de hacer lo que quiero.

max_layer
<xarray.DataArray (y: 3, z: 3)>
array([[3, 3, 2],
[3, 5, 2],
[2, 3, 3]])
Dimensions without coordinates: y, z

¿Cómo puedo resolver este problema?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Se puede usar el método mean() para calcular la media de los valores en el arreglo 3D, y luego usar el método argmax() para obtener el índice de la capa del arreglo 2D con mayor media.

    Por ejemplo:

    max_layer_index = array.mean(dim='x').argmax()
    

    Esto devolverá el índice de la capa del arreglo 2D con mayor media.

    Luego, se puede usar el método isel() para seleccionar la capa del arreglo 2D con mayor media:

    max_layer = array.isel(x=max_layer_index)
    
    >>> max_layer
    <xarray.DataArray (y: 3, z: 3)>
        array([[3, 3, 2],
               [3, 5, 2],
               [2, 3, 3]])
        Dimensions without coordinates: y, z
    

Comments are closed.