【问题标题】:Swap two rows in a numpy array in python [duplicate]在python中交换numpy数组中的两行[重复]
【发布时间】:2019-06-01 20:25:09
【问题描述】:

如何交换二维 NumPy 数组的第 x 行和第 y 行? 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]] 

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

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

output i got is:
[[9 9 3]
 [5 7 0]
 [9 9 3]
 [8 2 4]]

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

【问题讨论】:

    标签: python arrays numpy swap


    【解决方案1】:

    把索引作为一个整体:

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

    用你的例子:

    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]])
    

    【讨论】:

    • 成功了,谢谢:)
    • 对于任何对符号感到困惑的人,a[[0, 2]]a[[0, 2], :] 的简写,因此这将选择由所有行 0 和 2 组成的子矩阵。要交换 ,您将使用a[:, [0, 2]] = a[:, [2, 0]]
    猜你喜欢
    • 2014-02-12
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多