【问题标题】:Bug or feature: cloning a numpy array w/ slicing错误或功能:克隆带有切片的 numpy 数组
【发布时间】:2010-12-29 15:37:01
【问题描述】:

根据 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])

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

【问题讨论】:

    标签: python numpy


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      • 2022-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 2014-05-03
      相关资源
      最近更新 更多