重複的會回答what
,但不會充分回答why
或者爲什麼沒有在文檔中提到,即使它是必需的。請閱讀更多...爲什麼np.ndarray .__ deepcopy__需要一個多餘的參數?
有兩種方法制作numpy數組的深度副本。一種方法是使用copy
模塊中的copy.deepcopy
。另一種方法是直接撥打array.__deepcopy__
。
從docs:
ndarray.__deepcopy__() → Deep copy of array.
用於如果
copy.deepcopy
稱爲陣列上。
文檔提示調用此函數的正確方法是沒有任何參數的。但是...
In [47]: x
Out[47]:
array([[1, 1],
[2, 2]])
In [48]: x.__deepcopy__()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-48-00c3b8eda618> in <module>()
----> 1 x.__deepcopy__()
TypeError: __deepcopy__() takes exactly 1 argument (0 given)
A TypeError
is returned!但是......
In [51]: x.__deepcopy__(None)
Out[51]:
array([[1, 1],
[2, 2]])
即使...
In [52]: x.__deepcopy__([12345, 'blah blah'])
Out[52]:
array([[1, 1],
[2, 2]])
看來此功能,需要一個說法,但這樣的說法理應有對返回的副本沒有關係。
這種說法是不是在文件中提及。它是一個文檔錯誤?爲什麼如果它被忽略甚至傳入?
嗯,不錯。所以你會考慮這個缺乏提及文檔錯誤? –
沒有,因爲我不認爲你應該直接在正常使用期間調用'__whatever__'功能。 – kazemakase