gpt4 book ai didi

python - 为什么这个切片示例在 NumPy 中的工作方式与它在标准列表中的工作方式不同?

转载 作者:太空狗 更新时间:2023-10-30 01:00:20 25 4
gpt4 key购买 nike

为什么这个切片示例没有给出与标准列表相同的结果?它的工作方式就像它首先计算 an[:2] = bn[:2],然后计算 bn[:2] = an[:2]

import numpy as np

l1 = [1, 2, 3]
l2 = [4, 5, 6]

a = list(l1)
b = list(l2)

an = np.array(a)
bn = np.array(b)

print(a, b)
a[:2], b[:2] = b[:2], a[:2]
print(a, b)

print(an, bn)
an[:2], bn[:2] = bn[:2], an[:2]
print(an, bn)

输出:

--------------------
[1, 2, 3] [4, 5, 6]
[4, 5, 3] [1, 2, 6]
--------------------
[1 2 3] [4 5 6]
[4 5 3] [4 5 6]
--------------------

如果我这样做 - 一切正常:

dummy = an[:2]
an[:2] = bn[:2]
bn[:2] = dummy

最佳答案

对于列表,a[:2] 是列表的前两个元素的副本,对于 numpy 数组,这只是一个引用。您需要明确地制作一份副本:

an[:2], bn[:2] = bn[:2].copy(), an[:2].copy()

关于python - 为什么这个切片示例在 NumPy 中的工作方式与它在标准列表中的工作方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35783518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com