【问题标题】:Why is python automatically sorting an array I didn't tell it to sort [duplicate]为什么python会自动对数组进行排序我没有告诉它排序[重复]
【发布时间】:2021-01-18 08:00:31
【问题描述】:

为什么 python 对数组进行排序,我没有要求它排序,如何让它停止?

例如,我有一个 NumPy 数组 A

A = np.array[4, 7, 1, 3, 2], [3, 2, 4, 2, 1]

我希望对这个数组进行排序,但保留其原始结构,以便以后对其进行索引。所以我的想法是制作一个数组的副本并对副本进行排序:

B = A
B.sort()

那么,为什么当我在这个排序命令之后打印 A 时,它会打印排序后的数组?即使我从未调用过 sort ?

print(a)


[[1 2 3 4 7]
[1 2 2 3 4]]

有没有办法解决这个问题?

【问题讨论】:

  • B = A 创建副本。
  • 正确,B 只是引用了内存中存储 A 的位置,所以它们指向的是同一个东西。
  • 我明白了。有没有办法复制?
  • @jonrsharpe 我认为人们很难用 Python 解决这个问题:= 从不 复制。如果你想要一个副本,你必须明确说明它。见Zen of Python:显式优于隐式。
  • @Yoddlenod 阅读以下内容:nedbatchelder.com/text/names.html

标签: python arrays numpy sorting


【解决方案1】:

如上所述,B只是指向A在内存中的同一位置,所以修改B也修改了A。需要调用.copy()方法,如下所示:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    相关资源
    最近更新 更多