use*_*ty1 5 python numpy python-3.x
为什么这个切片示例不会给出与标准列表相同的结果?它的工作原理就像它首先评估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)
Run Code Online (Sandbox Code Playgroud)
输出:
--------------------
[1, 2, 3] [4, 5, 6]
[4, 5, 3] [1, 2, 6]
--------------------
[1 2 3] [4 5 6]
[4 5 3] [4 5 6]
--------------------
Run Code Online (Sandbox Code Playgroud)
如果我这样做 - 一切正常:
dummy = an[:2]
an[:2] = bn[:2]
bn[:2] = dummy
Run Code Online (Sandbox Code Playgroud)
对于列表a[:2]
是带有前两个元素的列表的副本,对于numpy数组,这只是一个引用.您需要明确地制作副本:
an[:2], bn[:2] = bn[:2].copy(), an[:2].copy()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
91 次 |
最近记录: |