错误或功能:使用切片克隆numpy数组

Ger*_*ncy 3 python numpy

跟随David Morrissey的回答" 如何克隆python中的列表?'我正在运行一些性能测试,并在使用w/numpy数组时遇到意外行为.我知道可以/应该克隆一个numpy数组w /

clone = numpy.array(original)
Run Code Online (Sandbox Code Playgroud)

要么

clone = numpy.copy(original)
Run Code Online (Sandbox Code Playgroud)

但错误地认为切片也会起作用.然而:

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])
Run Code Online (Sandbox Code Playgroud)

这种轻微的不一致是否有充分的理由,或者我应该提交错误?

nos*_*klo 11

在numpy中,切片是原始数组上的引用或"视图",因此它们不是副本.这是设计,而不是错误.原因是副本不如视图有用.