如何获取Python 2.7二维数组中四个最大值的索引?
获取二维数组中前四大值的索引(Python 2.7)
嘿,我来帮你搞定这个需求!在Python 2.7里要提取二维数组中前四个最大值对应的索引,可以按照以下步骤实现:
1. 先定义你的二维数组
首先把你给出的数组用Python列表形式写出来:
ge = [ [5.854, 7.225, 4.458, 1.834, 0.566, 0.14, 0.029, 0.005, 0.001, 0.0], [9.39, 11.588, 7.15, 2.941, 0.907, 0.224, 0.046, 0.008, 0.001, 0.0], [7.53, 9.293, 5.734, 2.359, 0.728, 0.18, 0.037, 0.007, 0.001, 0.0], [4.026, 4.968, 3.066, 1.261, 0.389, 0.096, 0.02, 0.003, 0.001, 0.0], [1.614, 1.992, 1.229, 0.506, 0.156, 0.039, 0.008, 0.001, 0.0, 0.0] ]
2. 生成包含索引和值的组合列表
我们需要把每个元素的行索引、列索引和它的数值绑定在一起,这样排序的时候才能对应上索引。用列表推导式就能轻松实现:
# 遍历每一行和每一列,生成(索引对, 数值)的结构 all_elements = [((i, j), value) for i, row in enumerate(ge) for j, value in enumerate(row)]
3. 按数值从大到小排序
接下来对这个组合列表按数值降序排列,这样最大的元素就会排在最前面:
# 以每个元素的数值为排序依据,reverse=True表示降序 sorted_elements = sorted(all_elements, key=lambda x: x[1], reverse=True)
4. 提取前四个最大值的索引
最后取排序后的前四个元素,把它们的索引对提取出来,如果需要转成列表形式(而不是元组),可以额外做一步转换:
# 提取前四个的索引,转成列表格式 top_four_indices = [list(item[0]) for item in sorted_elements[:4]]
验证结果
运行上面的代码后,打印top_four_indices就能得到你预期的结果:
print(top_four_indices) # 输出: [[1, 1], [1, 0], [2, 1], [0, 1]]
这个方法逻辑清晰,对于你的数组规模来说效率完全足够。如果数组特别大,也可以考虑用堆结构来优化,但目前这个方案简单直接,完全能满足你的需求~
内容的提问来源于stack exchange,提问作者garyk1968
相关产品推荐
相关产品推荐

