使用lambda(python)查找矩阵中列的索引
如何找到元素和最小的列的索引。我想找到使用lambdas的简短解决方案。 例如,对于给定的矩阵:使用lambda(python)查找矩阵中列的索引,python,lambda,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。因为第三列具有最小的元素和。使用numpy,您可以按列sum,并使用argmin()查找最小和索引: import numpy as np np.array(lst).sum(axis = 0).argmi
[[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
。因为第三列具有最小的元素和。使用numpy
,您可以按列sum
,并使用argmin()
查找最小和索引:
import numpy as np
np.array(lst).sum(axis = 0).argmin()
# 3
或者,您可以使用列表理解而不使用
numpy
package:
min(((i, sum(v)) for i, v in enumerate(zip(*lst))), key = lambda x: x[1])[0]
# 3
- 使用
转换列表zip(*lst)
- 枚举以循环遍历列(因为它已被转置)
- 对于每一列,采用索引和列的总和
- 通过返回元组(索引,最小值)的和计算最小值对
min(enumerate(map(sum,zip(*m)),key=lambda x:x[1])[0]
不一定更快,因为这两种方法都只使用生成器,但肯定是更好、更短的方法。