亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 247 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號