Должен ли я использовать np.absolute или np.abs?

Numpy предоставляет как np.absolute, так и псевдоним np.abs определяется через

from .numeric import absolute as abs

который, по-видимому, находится в явном нарушении zen python:

Должен быть один - и желательно только один - простой способ сделать это.

Итак, я предполагаю, что для этого есть веская причина.

Я лично использовал np.abs почти во всем моем коде и смотрел, например, на. количество результатов поиска np.abs vs np.absolute в stackoverflow кажется, что подавляющее большинство делает то же самое (2130 против 244 хитов).

Есть ли какая-либо причина, по которой я должен преимущественно использовать np.absolute over np.abs в своем коде, или мне нужно просто перейти к более "стандартным" np.abs?

Ответ 1

Вероятно, потому что есть встроенные функции с тем же именем, abs. То же самое верно для np.amax, np.amin и np.round_.

Алиасы для функций NumPy abs, min, max и round определены только в верхней части страницы, пакет уровня.

So np.abs и np.absolute полностью идентичны. Неважно, какой из них вы используете.

Есть несколько преимуществ для коротких имен: они короче, и они известны программистам на Python, потому что имена идентичны встроенным функциям Python. Таким образом, конечным пользователям это проще (меньше, типом, меньше, чтобы помнить).

Но есть и причины иметь разные имена: NumPy (или, как правило, сторонние пакеты) иногда нуждаются в функциях Python abs, min и т.д. Поэтому внутри пакета они определяют функции с другим именем, чтобы вы все еще могут получить доступ к функциям Python - и только на верхнем уровне пакета вы обнаружите "ярлыки". Примечание. В этом случае разные имена не являются единственной доступной опцией: можно было бы обойти это с помощью модуля Python builtins для доступа к встроенной функции, в функциях, если затенено встроенное имя.

Возможно, так и было (но это чистая спекуляция с моей стороны), что изначально они включали в себя давно названные функции absolute (и т.д.) и позже добавляли короткие псевдонимы. Будучи большой и хорошо используемой библиотекой, разработчики NumPy не снимают и не умаляют вещи. Поэтому они могут просто хранить длинные имена, потому что они могут сломать старый код/​​скрипты, если они удалят их.