使用lambda(python)查找矩阵中的列索引

时间:2016-12-22 19:34:20

标签: python lambda

如何找到具有最小元素总和的列索引。我想找到使用lambdas的简短解决方案。 例如,对于给定的矩阵:

[[7, 2, 7, 2, 8],
 [2, 9, 4, 1, 7],
 [3, 8, 6, 2, 4],
 [2, 5, 2, 9, 1],
 [6, 6, 5, 4, 5]]

它应该返回3。因为第三列具有最小的元素总和。

1 个答案:

答案 0 :(得分:1)

使用numpy,您可以按列sum使用argmin()查找最小和索引:

import numpy as np
np.array(lst).sum(axis = 0).argmin()
# 3

或者您可以在不使用numpy包的情况下使用列表理解:

min(((i, sum(v)) for i, v in enumerate(zip(*lst))), key = lambda x: x[1])[0]
# 3
  • 使用zip(*lst)转置列表
  • 枚举循环遍历列(因为它已被转置)
  • 为每列采用索引和列的总和
  • 通过总和计算最小对,返回元组(索引,最小值)