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.

Tipo de operando no soportado para -: ‘función’ y ‘función’

Tengo un problema donde estoy intentando devolver la cantidad de objetos en un arreglo que están dentro de 1 desviación estándar. Para obtener la desviación estándar, creé dos funciones, pero ahora no puedo sumar/restar las funciones. Intenté convertir las funciones a enteros, pero empecé a obtener un error con respecto al hecho de que mi desviación estándar es un flotante. ¿Hay una mejor manera de hacer todo esto?

import numpy as np
import math
vac_nums = np.array([180, 172, 178, 185, 190, 195, 192, 200, 210, 190])

def variance():
    n = len(vac_nums)
    mean = sum(vac_nums) / n
    deviations = [(x - mean) ** 2 for x in vac_nums]
    variance = sum(deviations) / n
    return variance

print(variance())

def stdev():
    var = variance()
    std_dev = math.sqrt(var)
    return std_dev

print(stdev())

sum = 0 
for x in vac_nums:
    if np.array(x) >= (variance - stdev) and np.array(x) <= (variance + stdev):
        sum += 1

print(sum)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    En lugar de tratar de convertir la función de desviación estándar a un número entero y obtener un error debido al valor decimal, simplemente puedes llamar a la función stdev() dentro de tu bucle para calcular la desviación estándar sobre la marcha en cada iteración. Además, no debes usar “sum” como nombre de variable, ya que es una función integrada de Python. Aquí tienes un fragmento de código actualizado:

    import numpy as np
    import math
    
    vac_nums = np.array([180, 172, 178, 185, 190, 195, 192, 200, 210, 190])
    
    def variance():
        n = len(vac_nums)
        mean = sum(vac_nums)/n
        deviations = [(x - mean) ** 2 for x in vac_nums]
        variance = sum(deviations)/n
        return variance
    
    def stdev():
        var = variance()
        std_dev = math.sqrt(var)
        return std_dev
    
    std_dev = stdev()
    count = 0 
    for x in vac_nums:
        if x >=(variance()-std_dev) and x <=(variance()+std_dev):
            count += 1
    print(count)
    

    En este código actualizado, primero definimos las funciones variance y stdev como antes. A continuación, calculamos la desviación estándar y la almacenamos en una variable llamada std_dev. Luego, recorremos cada elemento en el array vac_nums y verificamos si se encuentra dentro de una desviación estándar de la media. Si es así, incrementamos la variable count. Por último, imprimimos el valor de count, que representa la cantidad de objetos dentro de 1 desviación estándar.

Comments are closed.