python - ¿Debo usar np.absolute o np.abs?
absolute value python (1)
Es probable porque hay funciones incorporadas con el mismo nombre, abs
. Lo mismo es cierto para np.amax
, np.amin
y np.round_
.
Los alias para las funciones NumPy abs
, min
, max
y round
solo se definen en el paquete de nivel superior.
Entonces np.abs
y np.absolute
son completamente idénticos. No importa cuál uses.
Los nombres cortos tienen varias ventajas: son más cortos y los programadores de Python los conocen porque los nombres son idénticos a las funciones de Python incorporadas. Así, los usuarios finales lo tienen más fácil (menos para escribir, menos para recordar).
Pero también hay razones para tener nombres diferentes: NumPy (o, en general, paquetes de terceros) a veces necesitan las funciones de Python abs
, min
, etc. Por lo tanto, dentro del paquete definen funciones con un nombre diferente para que aún pueda acceder a las funciones de Python. y justo en el nivel superior del paquete, usted expone los "accesos directos". Nota: los nombres diferentes no son la única opción disponible en ese caso: se podría builtins
el problema con los módulos builtins
módulo Python para acceder a las funciones integradas si uno sigue a un nombre incorporado.
También podría ser el caso (pero eso es pura especulación de mi parte) que originalmente solo incluían las funciones absolute
nombre largo (y así sucesivamente) y solo añadían los alias cortos más adelante. Al ser una biblioteca grande y bien utilizada, los desarrolladores de NumPy no eliminan o desaprueban las cosas a la ligera. Por lo tanto, es posible que solo mantengan los nombres largos porque podría romper el código / los scripts antiguos si los eliminaran.
Numpy proporciona np.absolute
y el alias np.abs
definidos a través de
from .numeric import absolute as abs
que parece estar en clara violación del zen de python :
Debe haber una, y preferiblemente solo una, obvia forma de hacerlo.
Así que supongo que hay una buena razón para esto.
Personalmente he estado usando np.abs
en casi todo mi código y, por ejemplo, observando el número de resultados de búsqueda de np.abs vs np.absolute en Stack Overflow, parece que una mayoría abrumadora hace lo mismo (2130 vs 244 hits).
¿Hay alguna razón por la que deba usar np.absolute
preferencialmente sobre np.abs
en mi código, o debo simplemente ir por el np.abs
más "estándar"?