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)。
添加回答
舉報