我有一个 2D Numpy 数组 - arr2D = numpy.array([[11,12,13],[14,15,16],[17,11],[12,14,15]]).
- 我想在上面的二维数组中找到前 3 个最大值 ==> 17,16,15
- 我还想在数组中获取这些值的行索引号 ==> 行索引 = 2,1,3
有人可以告诉我如何实现这一目标吗?
谢谢。
我有一个 2D Numpy 数组 - arr2D = numpy.array([[11,12,13],[14,15,16],[17,11],[12,14,15]]).
有人可以告诉我如何实现这一目标吗?
谢谢。
您可以使用 np.argsort
对扁平数组进行排序,然后将全局索引除以列数以检索行索引:
>>> arg = (-x).flatten().argsort()
array([ 6,5,4,7,11,3,10,2,1,9,8])
>>> arg[:3] // 3
array([2,1])
第 2 行 (17
)、第 1 行 (16
) 和第 1 行 (15
)。
使用 arr2D.max(axis=1) 可以获得每个子数组的最大值。
这里:How do I get indices of N maximum values in a NumPy array? 是如何获得 N 个最大元素的索引的解决方案。