Python Función abs(): Ejemplos de valores absolutos

⚡ Resumen inteligente

Python `abs()` es una función integrada que devuelve el valor absoluto de un número, es decir, su distancia a cero sin signo. Acepta números enteros, números de coma flotante y números complejos, devolviendo la magnitud para entradas complejas.

  • 🔢 Valor absoluto: abs() elimina el signo de un número y devuelve su distancia desde cero, por lo que abs(-25) y abs(25) dan como resultado 25.
  • 🧮 Tipos de números: El único argumento puede ser un número entero, un número de coma flotante o un número complejo, y el tipo de retorno coincide con el de la entrada.
  • 🔟 Magnitud compleja: Para un número complejo como (3+10j), abs() devuelve su magnitud, la raíz cuadrada de las partes real e imaginaria elevadas al cuadrado.
  • 📋 Liza: abs() maneja un número a la vez, por lo que una comprensión como [abs(n) for n in nums] la aplica a todos los elementos.
  • 🇧🇷 abs() frente a math.fabs(): La función integrada abs() conserva el tipo de entrada y admite números complejos, mientras que math.fabs() siempre devuelve un número de coma flotante y necesita el módulo math.
  • 🤖 Asistencia de IA: Las herramientas de IA, como GitHub Copilot, generan llamadas a abs() y NumPy np.abs() para tareas como el error absoluto medio a partir de una breve indicación.

Python función abs()

Python abs ()

Python abs () es una función integrada disponible con la biblioteca estándar de PythonDevuelve el valor absoluto del número dado. El valor absoluto de un número es aquel que no tiene signo. El número puede ser entero, de punto flotante o complejo. Si el número es complejo, devolverá su magnitud.

Sintaxis

La sintaxis de la función abs() se muestra a continuación:

abs(value)

Parámetros (valor)

El valor de entrada que se le debe dar a abs() para obtener el valor absoluto. Puede ser un número entero, un número flotante o un número complejo.

Valor de retorno:

La función abs() devuelve el valor absoluto del número dado.

  • Si la entrada es un número entero, el valor devuelto también será un número entero.
  • Si la entrada es un número decimal, el valor devuelto también será un número decimal.
  • Si la entrada es un número complejo, el valor de retorno será la magnitud de la entrada.

Ejemplos

Los siguientes ejemplos muestran la función abs() aplicada a valores enteros, de punto flotante y complejos.

Code Ejemplo 1: Número entero y número de coma flotante

Para obtener el valor absoluto de un número entero y un número decimal, consulte este código:

# testing abs() for an integer and float
  int_num = -25
  float_num = -10.50
  print("The absolute value of an integer number is:", abs(int_num))
  print("The absolute value of a float number is:", abs(float_num))

Salida:

The absolute value of an integer number is: 25
The absolute value of a float number is: 10.5

Ejemplo 2: Número complejo

Para obtener el valor absoluto de un número complejo, utilice este código:

# testing abs() for a complex number
complex_num = (3+10j)
print("The magnitude of the complex number is:", abs(complex_num))

Salida:

The magnitude of the complex number is: 10.44030650891055

Cómo encontrar el valor absoluto de una lista en Python

La función `abs()` opera sobre un solo número, por lo que pasarle una lista completa genera un `TypeError`. Para aplicarla a cada elemento de una lista, utilice una comprensión de lista que llame a `abs()` en cada elemento:

numbers = [12, 30, -33, -22, 77, -100]
abs_numbers = [abs(num) for num in numbers]
print(abs_numbers)

Salida:

[12, 30, 33, 22, 77, 100]

La comprensión mantiene el orden original y devuelve una nueva lista de valores positivos. Puedes lograr el mismo resultado con la función integrada map(), por ejemplo. list(map(abs, numbers)), que aplica abs() a cada elemento sin escribir un bucle explícito.

  • Utilice una comprensión de lista cuando también desee filtrar o transformar los valores.
  • Utilice map() para una llamada corta y legible que aplica abs() directamente.
  • Para conjuntos de datos numéricos grandes, una matriz NumPy con np.abs() es más rápida que una Python lazo.

Python abs() vs math.fabs()

Python Ofrece dos maneras de obtener un valor absoluto: la función integrada abs() y la función fabs() del módulo math. Son similares en apariencia, pero se comportan de manera diferente:

import math

print(abs(-7))          # 7 (int is unchanged)
print(math.fabs(-7))    # 7.0 (float result)

Salida:

7
7.0

Las principales diferencias entre ambas funciones son:

  • Tipo de retorno: abs() conserva el tipo de entrada y devuelve un entero para un entero, mientras que math.fabs() siempre devuelve un número de coma flotante.
  • Importar: abs() siempre está disponible, pero math.fabs() requiere import math.
  • Números complejos: abs() devuelve la magnitud de un número complejo, mientras que math.fabs() genera un TypeError para entradas complejas.

Aplicaciones prácticas de la Python función abs()

Debido a que descarta la información del signo, abs() es útil cuando solo importa el tamaño de un valor y no su dirección. Un ejemplo común es encontrar la diferencia entre dos lecturas:

temp_morning = 12
temp_night = -5
print("Temperature change:", abs(temp_morning - temp_night))

Salida:

Temperature change: 17

Entre los usos cotidianos del valor absoluto se incluyen:

  • Distancias y diferencias: medir la diferencia entre dos puntos, temperaturas o marcas de tiempo, independientemente de cuál de los dos valores sea mayor.
  • Métricas de error: calcular el error absoluto entre un valor previsto y un valor real.
  • Comprobaciones de tolerancia: probar si un resultado está lo suficientemente cerca de un objetivo, como en abs(actual - expected) < 0.01.
  • Finanzas: informar la magnitud de una ganancia o pérdida sin su signo.

Como en el función round(), abs() es una función integrada que puedes llamar directamente sin importar ningún módulo.

Preguntas Frecuentes

No. abs() devuelve un nuevo valor y nunca modifica su argumento, porque los números en Python son inmutables. Para conservar el resultado, asígnelo a una variable, por ejemplo, positivo = abs(número). La variable original conserva su valor con signo.

No. Pasar una cadena genera un TypeError: bad operand type for abs(): 'str', ya que abs() solo acepta números enteros, decimales o complejos. Para medir una cadena, utilice len(), que devuelve la cantidad de caracteres que contiene.

Puedes calcularlo manualmente. Para un valor x, max(x, -x) devuelve el valor absoluto, y (x ** 2) ** 0.5 también funciona para números reales. Sin embargo, la función integrada abs() es más clara, rápida y también admite números complejos.

No. La notación de barra vertical |x| es matemática, no Python sintaxis; en Python El símbolo | es el operador OR bit a bit. Para obtener un valor absoluto, debe llamar a la función integrada abs(), por ejemplo abs(-8), que devuelve 8.

__abs__ es el método dunder que abs() llama en segundo plano. Cuando escribes abs(obj), Python Ejecuta obj.__abs__(). Definir __abs__ en tu propia clase permite que abs() funcione con objetos personalizados, como un vector o un tipo de moneda.

Utilice las versiones vectorizadas en lugar de un bucle. La función np.abs(array) de NumPy devuelve un nuevo array con todos los elementos convertidos a positivo, y la función Series de pandas expone Series.abs(). Ambas aplican el valor absoluto a todos los elementos a la vez, lo que resulta más rápido para conjuntos de datos grandes.

La función `abs()` es fundamental para las métricas de error y distancia. El error absoluto medio (MAE) y la pérdida L1 suman las diferencias absolutas entre las predicciones y los valores objetivo, y los valores absolutos miden la magnitud del gradiente. Para matrices completas, la función `np.abs()` de NumPy aplica la misma operación a cada elemento de forma eficiente.

GitHub Copilot sugiere llamadas a `abs()`, comprensiones de listas como `[abs(n) for n in nums]` y líneas `np.abs()` de NumPy directamente a partir de un breve comentario. También puede generar una función de error absoluto medio, lo que permite confirmar la lógica en lugar de escribir código repetitivo.

Resumir este post con: