小编JPG*_*JPG的帖子

在Numpy的行交换

在Python中,我可以通过多重表示来交换2个变量; 它也适用于列表:

l1,l2=[1,2,3],[4,5,6]
l1,l2=l2,l1
print(l1,l2)
>>> [4, 5, 6] [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

但是当我想要交换2行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]]
Run Code Online (Sandbox Code Playgroud)

我认为,由于一个奇怪的原因,这两列现在指向相同的值; 但事实并非如此,因为a3[0,0]=5在前面的行改变a3 [0,0]而不是a3 [1,0]之后.

我已经找到了如何处理这个问题:例如a3[0,:],a3[1,:]=a3[1,:].copy(),a3[0,:].copy()有效.但任何人都可以解释为什么具有多重影响的交换会因为numpy行而失败?我的问题涉及Python和Numpy的基础工作.

python numpy

15
推荐指数
1
解决办法
2万
查看次数

标签 统计

numpy ×1

python ×1