numpy 二维数组 - 从第一列中选​​择所有值,在第二列中具有最大值

numpy 2D array - choose all values from 1st column having max value in 2nd column

给定一个 numpy 二维数组,我想 随机 select 第一列的值,其第二列的值为最大值 。当第二列中只有一个最大值时,我发现这非常简单,但我需要能够处理多个最大值。

在下面显示的数组中,第 2 列中的最大值 = 6,并且有 4 个这样的实例。所以,我想随机 select 这些第一列值之一(即:4、1、-5 或 -3)。

import numpy as np

arr = np.array([[ 4,6],
                [-7,4],
                [ 1,6],
                [-5,6],
                [ 0,4],
                [-4,2],
                [ 7,5],
                [-3,6],
                [ 0,3]])  

下一行工作得很好,但我想知道更有经验的编码员是否可以简化它:

r = np.random.choice(arr[np.where(arr[:,1] == np.max(arr[:,1]))][:,0])

谢谢。

您可以使用r = np.random.choice(arr[(arr[:,1] == arr[:,1].max())][:,0])

numpy 数组有一个 max 方法,而不是 'where' 你可以只设置相等作为你的索引。