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

问题描述 投票:41回答:1

Numpy同时提供了np.absolute和别名np.abs

from .numeric import absolute as abs

这似乎明显违反了the zen of python

应该有一个 - 最好只有一个 - 明显的方法来做到这一点。

所以我猜这有充分的理由。

我个人一直在几乎所有的代码中使用np.abs并查看例如在Stack Overflow上搜索np.absnp.absolute的搜索结果数量相似,绝大多数搜索结果相同(2130 vs 244次点击)。

我有什么理由在我的代码中优先使用np.absolute而不是np.abs,或者我应该只选择更“标准”的np.abs

python numpy absolute-value
1个回答
33
投票

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

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

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

短名称有几个优点:它们更短,并且Python程序员知道它们,因为名称与内置Python函数相同。因此,最终用户可以更轻松(更少打字,更少记住)。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.