为了账号安全,请及时绑定邮箱和手机立即绑定

Numpy ndarray 最小/最大方法中的错误

Numpy ndarray 最小/最大方法中的错误

三国纷争 2022-12-20 15:17:34
我假设我在这里做错了什么,但我正在 Pycharm 中开发一个项目,它在使用未定义 ( )的ndarray.max()函数时通知我。查看文档,确实表明参数没有默认值。initialparameter 'initial' unfilledinitial在 Pycharm 中按住ctrl 并单击该ndarray.max()函数时,会打开以下函数:    def max(self, axis=None, out=None, keepdims=False, initial, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__     """    a.max(axis=None, out=None, keepdims=False, initial=<no value>, where=True)        Return the maximum along a given axis.        Refer to `numpy.amax` for full documentation.        See Also        --------        numpy.amax : equivalent function    """    pass这似乎甚至没有做任何事情。无论哪种方式,代码都有效,只给出了一个 IDE 错误。我使用了错误的功能吗?我知道有amaxandmax以及 package level numpy.max,但以上似乎是不需要的行为。如果这是一个错误,我不知道如何报告它/开始一个问题或其他什么,哈哈。
查看完整描述

3 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

它看起来是空的,因为它不是在 python 中实现的,可能是 C/C++,正如您可以从中弄清楚的那样# real signature unknown; NOTE: unreliably restored from __doc__——它只是提示您此函数具有什么参数。它甚至不是有效的 python ;)

基于 amax 的文档:

初始标量,可选

输出元素的最小值。必须存在以允许对空切片进行计算。有关详细信息,请参阅减少。

你最好将一些东西传递给 initial


查看完整回答
反对 回复 2022-12-20
?
慕森王

TA贡献1777条经验 获得超3个赞

首先,正如其他人已经提到的,这部分是自动生成的。如果你想更好地理解这一点,你可以尝试通读 NumPy 文档(例如如何扩展 NumPyFTPY 用户指南):) 还有很多关于这个主题的其他资源。

我在您的帖子中看到两个问题:

1.为什么PyCharm报错代码能正常运行?

其他人已经指出max函数的实现是空的,因为代码是从其他地方获取的。无论如何,当您检查函数签名时,它是无效的(非默认参数遵循默认参数)。这会导致 PyCharm 警告您应该填充initial参数,因为它未填充。事实上,这只是警告,因为正如您所写的那样,一切工作正常,因为实际的实施工作正常(我面前没有它,但它应该遵循您在 中看到的内容np.max)。

要消除此警告,您有以下三种选择:

  • 始终填充initial参数

  • 使用np.maxnp.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()


查看完整回答
反对 回复 2022-12-20
?
RISEBY

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)。


查看完整回答
反对 回复 2022-12-20
  • 3 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信