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)
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:
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.