nav*_*doo 11 python arrays swap numpy
我正在尝试使用同时分配交换Numpy数组的列,我得到一个意外的行为:
A = arange(12).reshape(3,4)
print(A)
# prints [[ 0 1 2 3] Ok
# [ 4 5 6 7]
# [ 8 9 10 11]]
A[:,0], A[:,1] = A[:,1], A[:,0]
print(A)
# prints [[ 1 1 2 3] Not what intended (swap)
# [ 5 5 6 7]
# [ 9 9 10 11]]
Run Code Online (Sandbox Code Playgroud)
预期行为:评估RHS上数组的"视图",然后由LHS上的目标对象执行分配,将RHS视图的内容"复制"到新位置.我声称副本是在切片到切片的分配中进行的,原因如下:
A = arange(12).reshape(3,4)
A[:,0] = A[:,1]
A[:,1] = array([99,99,99])
print A[:,0]
# prints: [1 5 9]
Run Code Online (Sandbox Code Playgroud)
实际发生的事情:似乎在切片的同时分配中,ndarray评估并在"一次一个"的RHS和LHS上分配各种术语:首先A[:,0] = A[:,1]然后A[:,1] = A[:,0].
这是由于ndarray类以不同于标准python方式的方式自定义同时分配吗?
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |