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' 你可以只设置相等作为你的索引。
给定一个 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' 你可以只设置相等作为你的索引。