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

2024-04-24 21:28:06 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么这个切片示例不能给出与标准列表相同的结果?它的工作原理就像它首先计算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

Tags: importanl1示例列表标准np切片
1条回答
网友
1楼 · 发布于 2024-04-24 21:28:06

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

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

相关问题 更多 >