查找行的索引号和 2D Numpy 数组的前 3 个最大值的值
Find the index number of row and values of first 3 maximum values of 2D Numpy Array
我有一个 2D Numpy 数组 - arr2D = numpy.array([[11, 12, 13], [14, 15, 16], [17, 15, 11],
[12, 14, 15]]).
- 我想在上面的二维数组中找到前 3 个最大值 ==> 17, 16, 15
- 我还想获取数组中这些值的行索引号 ==> 行索引 = 2,1,3
有人可以告诉我如何实现吗?
谢谢。
您可以使用 np.argsort
对展平数组进行排序,然后将全局索引除以列数以检索行索引:
>>> arg = (-x).flatten().argsort()
array([ 6, 5, 4, 7, 11, 3, 10, 2, 1, 9, 0, 8])
>>> arg[:3] // 3
array([2, 1, 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 个最大元素的索引的解决方案。
我有一个 2D Numpy 数组 - arr2D = numpy.array([[11, 12, 13], [14, 15, 16], [17, 15, 11], [12, 14, 15]]).
- 我想在上面的二维数组中找到前 3 个最大值 ==> 17, 16, 15
- 我还想获取数组中这些值的行索引号 ==> 行索引 = 2,1,3
有人可以告诉我如何实现吗?
谢谢。
您可以使用 np.argsort
对展平数组进行排序,然后将全局索引除以列数以检索行索引:
>>> arg = (-x).flatten().argsort()
array([ 6, 5, 4, 7, 11, 3, 10, 2, 1, 9, 0, 8])
>>> arg[:3] // 3
array([2, 1, 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 个最大元素的索引的解决方案。