python numpy absolute-value

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"?