【发布时间】:2017-08-02 13:47:57
【问题描述】:
副本将回答 what,但不会充分回答 why 或为什么文档中未提及它,即使它是必需的。继续阅读以了解更多...
有两种方法可以制作 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)
返回一个TypeError!但是……
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]])
看起来这个函数需要一个参数,但这个参数应该与返回的副本无关。
文档中未提及此参数。它是一个文档错误吗?为什么忽略了还要传入呢?
【问题讨论】:
标签: python arrays numpy copy deep-copy