如何获取每个矩阵行的最大值并将其保存在另一个列表中?

时间:2018-04-06 10:42:25

标签: python list max

我有这样的矩阵:

matrix = [ [0,0,2],[1,0,1],[2,1,0] ]

我希望得到一个列表:

[2,1,2]

比较是每列的列,因此矩阵[0] [0]与矩阵[1] [0]和矩阵[2] [0]进行比较,谢谢

另一个例子:

[[0,0,2],[1,0,1],[2,1,0],[2,1,3]]

我希望得到一个列表:

[2,1,3]

5 个答案:

答案 0 :(得分:4)

使用map

替代列表理解
>>> list(map(max, l))

#driver values:

IN : l = [ [0,0,2],[1,0,1],[2,1,0] ]
OUT : [2, 1, 2]

编辑:以上查找每个内部列表的最大值。 OP的所需行为(逐列)相同:

>>> list(map(max, zip(*l)))

#driver values:

IN : l = [[0,0,2],[1,0,1],[2,1,0],[2,1,3]]
OUT : [2, 1, 3]

答案 1 :(得分:2)

如果您乐意使用第三方库,numpy提供了一种方式。

这假设您的列表元素具有相同的长度。

import numpy as np

A = np.array([[0,0,2],[1,0,1],[2,1,0],[2,1,3]])

res = A.max(axis=0)

# array([2, 1, 3])

答案 2 :(得分:1)

lst = [ [0,0,2],[1,0,1],[2,1,0] ]

print [max(i) for i in lst]

答案 3 :(得分:0)

列表理解,压缩和缩减的组合也应该提供所需的结果:

matrix = [[0,0,2],[1,0,1],[2,1,0],[2,1,3]]

max_cols = [max(list(i)) for i in zip(*matrix)]

max_cols具有矩阵列的最大值 - [2,1,3]

答案 4 :(得分:-1)

正如其他人所说,你可以使用

>>> [max(i) for i in a]
[2, 1, 2]

但是这也与你想要的相反

>>> [min(i) for i in a]
[0, 0, 0]