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

发布于 2021-01-29 15:05:05

遵循David
Morrissey关于“如何在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])

是否存在这种轻微不一致的充分原因,还是应该提交错误?

关注者
0
被浏览
81
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在numpy中,切片是原始数组上的引用或“视图”,因此它们不是副本。那是设计使然,而不是错误。原因是副本不如视图有用。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看