我应该使用np.absolute还是np.abs?

时间:2017-07-31 10:52:47

标签: python numpy absolute-value

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

1 个答案:

答案 0 :(得分:35)

可能是因为有一个同名的内置函数absnp.amaxnp.aminnp.round_也是如此。

NumPy函数abs, min, max and round的别名仅在顶级包中定义。

所以np.absnp.absolute完全相同。使用哪一个并不重要。

短名称有几个优点:它们更短,并且Python程序员知道它们,因为名称与内置Python函数相同。因此,最终用户可以更轻松地进行操作(减少输入,减少记忆)。

但是也有理由有不同的名称:NumPy(或者更普遍的第三方软件包)有时需要Python函数absmin等。所以在软件包中他们用一个函数定义函数不同的名称,所以你仍然可以访问Python函数 - 只是在包的顶层你公开"快捷方式"。注意:在这种情况下,不同的名称不是唯一可用的选项:如果有一个阴影内置名称,可以使用Python模块builtins解决这个问题,以访问内置函数。

也可能是这种情况(但我纯粹的猜测)他们最初只包括长命名的函数absolute(等等),后来只添加了短别名。作为一个大型且使用良好的库,NumPy开发人员不会轻易删除或弃用这些东西。因此,他们可能只保留长名称,因为它可能会破坏旧代码/脚本,如果他们将删除它们。