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.

Excluir ceros en el cálculo de cuantiles de filas de un arreglo de Numpy.

Pregunta

Tengo una matriz 2D con valores cero en cada fila.
[[5, 3, 2, 0, 0, 1, 6, 9, 11, 1, 4, 1],
[0, 0, 12, 0, 1, 0, 0, 2, 0, 30, 2, 2],
[120, 2, 10, 3, 0, 0, 2, 7, 9, 5, 0, 0]]
¿Hay alguna manera de calcular el cuantil 0.75 de cada fila al excluir los valores cero en el cálculo?

Por ejemplo, en la segunda fila, solo se deben utilizar 6 valores diferentes de cero [12,1,2,30,2,2] en el cálculo. Intenté utilizar np.quantile() pero incluye todos los valores cero en el cálculo. Parece que Numpy no tiene una versión de matriz enmascarada np.ma de quantile() también.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible calcular el cuantil 0.75 de cada fila excluyendo los valores cero en el cálculo. Puede usar la función numpy.percentile() para lograr esto. Esta función toma una matriz y un valor de percentil como argumentos y devuelve el valor en el percentil dado. Puede usar una comprensión de lista para iterar a través de cada fila y usar la función numpy.percentile() para calcular el cuantil 0.75 de cada fila, excluyendo los valores cero.

    Por ejemplo:

    import numpy as np
    
    arr = [[5, 3, 2, 0, 0, 1, 6, 9, 11, 1, 4, 1],
           [0, 0, 12, 0, 1, 0, 0, 2, 0, 30, 2, 2],
           [120, 2, 10, 3, 0, 0, 2, 7, 9, 5, 0, 0]]
    
    # Calcular el cuantil 0.75 de cada fila excluyendo los valores cero
    quantiles = [np.percentile([x for x in row if x != 0], 75) for row in arr]
    
    # Imprimir el resultado
    print(quantiles)
    
    # [7.25, 2.5, 10.5]
    

Comments are closed.