3 回答
TA贡献1844条经验 获得超8个赞
它看起来是空的,因为它不是在 python 中实现的,可能是 C/C++,正如您可以从中弄清楚的那样# real signature unknown; NOTE: unreliably restored from __doc__
——它只是提示您此函数具有什么参数。它甚至不是有效的 python ;)
基于 amax 的文档:
初始标量,可选
输出元素的最小值。必须存在以允许对空切片进行计算。有关详细信息,请参阅减少。
你最好将一些东西传递给 initial
TA贡献1777条经验 获得超3个赞
首先,正如其他人已经提到的,这部分是自动生成的。如果你想更好地理解这一点,你可以尝试通读 NumPy 文档(例如如何扩展 NumPy或FTPY 用户指南):) 还有很多关于这个主题的其他资源。
我在您的帖子中看到两个问题:
1.为什么PyCharm报错代码能正常运行?
其他人已经指出max
函数的实现是空的,因为代码是从其他地方获取的。无论如何,当您检查函数签名时,它是无效的(非默认参数遵循默认参数)。这会导致 PyCharm 警告您应该填充initial
参数,因为它未填充。事实上,这只是警告,因为正如您所写的那样,一切工作正常,因为实际的实施工作正常(我面前没有它,但它应该遵循您在 中看到的内容np.max
)。
要消除此警告,您有以下三种选择:
始终填充
initial
参数使用
np.max
或np.amax
代替禁用给定语句的 PyCharm 警告(使用
# noinspection PyArgumentList
)
如果你想用它做点什么,最好将它直接发布到NumPy 问题跟踪器或PyCharm 问题跟踪器)。
2.我应该填写initial
参数吗?
这个参数可以不填。您可能永远不需要使用它(至少我没有)并且a.max()
(a
您的数组在哪里)是计算最大值的常用方法,并且比a.max(initial=??)
.
但是您应该注意,在某些情况下,没有它就无法工作。像这样的特别简单的例子会引发 ValueError:
import numpy as np np.empty(0).max() # or np.array([]).max()
但是可能会有更多这样的隐藏案例(因为你有一个空切片而引发相同的错误):
np.array([1, 2, 3])[3:].max()
TA贡献1856条经验 获得超5个赞
在一个Ipython会话中,numpy 1.18 np.max??(如charm点击?)显示:
def amax(a, axis=None, out=None, keepdims=np._NoValue,
initial=np._NoValue, where=np._NoValue):
.... docs
return _wrapreduction(a, np.maximum, 'max', axis, None, out,
keepdims=keepdims, initial=initial, where=where)
File: /usr/local/lib/python3.6/dist-packages/numpy/core/fromnumeric.py
所以initial给出了这个独特的numpy常量._NoValue。实际动作相当于
np.maximum.reduce(a, ....)
initial在 1.15 版本中添加。 np.maximum.reduce??文档提供了更多信息initial(通常适用于二进制文件ufunc)。
添加回答
举报