python - 错误或功能 : cloning a numpy array w/slicing

标签 python numpy

跟进 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/

相关文章:

python - 拆分列并格式化列值

python - 获取带有 tkinter.filedialog.asksaveasfilename 的文件名以附加到其中

python - 嵌套循环列表并动态创建变量

python - 平均颜色有点错误。 (np.mean())

python - Numpy - 通过测试相邻索引获取索引位置

python - sklearn、python 中的网格搜索技术

python - 如何根据返回的不区分大小写的增量从文件系统中删除文件?

python - 如何在不使用 for 循环的情况下迭代图像中的所有像素并将它们的 RGB 值与另一个 RGB 值进行比较?

python - Numpy 确实对待 float ('nan' ) 并且 float 不同 - 转换为 None

numpy - 转置时numpy和 Octave 的fft不同