如何从numpy的数组中选择特定列的值最大的行?

时间:2019-11-21 13:33:49

标签: python numpy

给出一个特定形状(m,n)的数组,我想选择特定列值最大的整行(或找到其索引)。

考虑下面的数组。我想找到第二列的值最大的行。第二列的最大值是0.795,因此我应该返回[0.21212121, 0.795]

array([[-3.        ,  0.5       ],
       [-2.93939394,  0.5       ],
       [-2.87878788,  0.5       ],
       [ 0.21212121,  0.795     ],
       [ 0.27272727,  0.785     ],
       [ 0.33333333,  0.785     ],
       [ 0.39393939,  0.77      ],
       [ 2.93939394,  0.5       ],
       [ 3.        ,  0.5       ]])

我通过以下方式获得了预期的结果:

best_result = np.max(acc_m[:, 1])
row_with_best_res = acc_m[acc_m[:, 1] == best_result]

其中acc_m是数组的名称。

提出的解决方案有效,但我不敢相信没有更奇妙的Python方式可以做到这一点。

2 个答案:

答案 0 :(得分:4)

使用np.argmax()

以您的情况

row_with_best_res = acc_m[acc_m[:, 1].argmax()]

答案 1 :(得分:0)

您可以使用argmax函数:

row = acc_m[np.argmax(acc_m[:, 1])]
print(row)
[0.21212121 0.795     ]