gpt4 book ai didi

python - 为什么对 numpy 和 python list 进行相同的操作会得到不同的结果?

转载 作者:行者123 更新时间:2023-11-28 22:11:05 31 4
gpt4 key购买 nike

我尝试用一​​个numpy数组和一个元素完全相同的列表上的第二个元素的值替换第一个元素的值,但是我得到的结果是不同的。

1) 在 numpy 数组上测试:

test=np.array([2,1])
left=test[:1]
right=test[1:]
test[0]=right[0]
print('left=:',left)

我得到:left=: [1]

2) 在 python 列表上测试:

 test=[2,1]
left=test[:1]
right=test[1:]
test[0]=right[0]
print('left=:',left)

我得到:left=: [2]

谁能解释为什么结果不同?提前致谢。

最佳答案

切片(用冒号索引)一个 numpy 数组会返回一个 numpy 数组的 View ,因此当您稍后更新 test[0] 的值时,它会更新 left 的值,因为 left 只是数组的一个 View 。

当您切入 python 列表时,它只会返回一个副本,因此当您更新 test[0] 的值时,left 的值不会改变。

这样做是因为 numpy 数组通常非常大,创建大量数组副本可能会非常费力。

关于python - 为什么对 numpy 和 python list 进行相同的操作会得到不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56190271/

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