跟进 David Morrissey 在“How to clone a list in python?”上的回答' 我正在运行一些性能测试并在使用 numpy 数组时遇到意外行为。我知道一个 numpy 数组可以/应该被克隆 w/
clone = numpy.array(original)
或
clone = numpy.copy(original)
但错误地认为切片也可以解决问题。然而:
In [11]: original = numpy.arange(4)
In [12]: original
Out[12]: array([0, 1, 2, 3])
In [13]: clone = original[:]
In [14]: clone
Out[14]: array([0, 1, 2, 3])
In [15]: clone[0] = 1
In [16]: clone
Out[16]: array([1, 1, 2, 3])
In [17]: original
Out[17]: array([1, 1, 2, 3])
这种轻微的不一致是否有充分的理由,或者我应该提交错误?
最佳答案
在 numpy 中,切片是对原始数组的引用或“ View ”,因此它们不是副本。这是设计使然,而不是错误。原因是副本不如 View 有用。
关于python - 错误或功能 : cloning a numpy array w/slicing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4555431/