Numpy同时提供np.absolute
和通过
np.abs
from .numeric import absolute as abs
似乎明显违反了the zen of python:
应该有一个 - 最好只有一个 - 显而易见的方法。
所以我猜这是有充分理由的。
我个人一直在我的几乎所有代码中使用np.abs
并查看例如Stack Overflow上np.abs vs np.absolute的搜索结果数量似乎绝大多数都是相同的(2130 vs 244次点击)。
我是否有理由在我的代码中优先使用np.absolute
而不是np.abs
,或者我应该选择更多"标准" np.abs
?
答案 0 :(得分:35)
可能是因为有一个同名的内置函数abs
。 np.amax
,np.amin
和np.round_
也是如此。
NumPy函数abs
, min
, max
and round
的别名仅在顶级包中定义。
所以np.abs
和np.absolute
完全相同。使用哪一个并不重要。
短名称有几个优点:它们更短,并且Python程序员知道它们,因为名称与内置Python函数相同。因此,最终用户可以更轻松地进行操作(减少输入,减少记忆)。
但是也有理由有不同的名称:NumPy(或者更普遍的第三方软件包)有时需要Python函数abs
,min
等。所以在软件包中他们用一个函数定义函数不同的名称,所以你仍然可以访问Python函数 - 只是在包的顶层你公开"快捷方式"。注意:在这种情况下,不同的名称不是唯一可用的选项:如果有一个阴影内置名称,可以使用Python模块builtins
解决这个问题,以访问内置函数。
也可能是这种情况(但我纯粹的猜测)他们最初只包括长命名的函数absolute
(等等),后来只添加了短别名。作为一个大型且使用良好的库,NumPy开发人员不会轻易删除或弃用这些东西。因此,他们可能只保留长名称,因为它可能会破坏旧代码/脚本,如果他们将删除它们。