纽比换行

2024-05-16 22:03:36 发布

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

在Python中,我可以通过多个假装来交换2个变量;它还可以处理列表:

l1,l2=[1,2,3],[4,5,6]
l1,l2=l2,l1
print(l1,l2)
>>> [4, 5, 6] [1, 2, 3]

但当我想交换两行numpy数组时(例如在Gauss算法中),它失败了:

import numpy as np
a3=np.array([[1,2,3],[4,5,6]])
print(a3)
a3[0,:],a3[1,:]=a3[1,:],a3[0,:]
print(a3)
>>> [[1 2 3]
     [4 5 6]]
    [[4 5 6]
     [4 5 6]]

我想,出于一个奇怪的原因,这两列现在指向相同的值;但事实并非如此,因为前面的行改变了a3[0,0]而不是a3[1,0]。

我已经找到了解决这个问题的方法:例如a3[0,:],a3[1,:]=a3[1,:].copy(),a3[0,:].copy()可以。但是,有谁能解释为什么多个矫揉造作的交换在numpy行中失败呢?我的问题涉及Python和Numpy的底层工作。


Tags: importnumpy算法l1列表asnp数组