在python中的numpy数组中交换两行

Man*_*ish 2 python arrays swap numpy

如何交换二维NumPy数组的第x和yth行?x&y是用户提供的输入。假设x = 0&y = 2,输入数组如下:

a = [[4 3 1] 
         [5 7 0] 
         [9 9 3] 
         [8 2 4]] 
Expected Output : 
[[9 9 3] 
 [5 7 0] 
 [4 3 1] 
 [8 2 4]] 
Run Code Online (Sandbox Code Playgroud)

我尝试了多种方法,但没有得到预期的结果。这是我尝试的:

a[x],a[y]= a[y],a[x]

output i got is:
[[9 9 3]
 [5 7 0]
 [9 9 3]
 [8 2 4]]
Run Code Online (Sandbox Code Playgroud)

请提出我的解决方案出了什么问题。

Chr*_*ris 11

将索引作为一个整体:

a[[x, y]] = a[[y, x]]
Run Code Online (Sandbox Code Playgroud)

以您的示例为例:

a = np.array([[4,3,1], [5,7,0], [9,9,3], [8,2,4]])

a 
# array([[4, 3, 1],
#        [5, 7, 0],
#        [9, 9, 3],
#        [8, 2, 4]])

a[[0, 2]] = a[[2, 0]]
a
# array([[9, 9, 3],
#       [5, 7, 0],
#       [4, 3, 1],
#       [8, 2, 4]])
Run Code Online (Sandbox Code Playgroud)

  • 对于其他对符号“a[[0, 2]]”感到困惑的人来说,它是“a[[0, 2], :]”的简写,因此选择由所有行 0 和 2 组成的子矩阵。要互换 _columns_,你可以使用 `a[:, [0, 2]] = a[:, [2, 0]]`。 (26认同)