对于二维数组(矩阵)的应用有多广与多重要,怎么研究都不为过,突然想获取其中最大的一组值,发现max返回的是第一列最大值的这组数,如何获得第二列最大的这组数呢?
比如:A=[[1, 2], [12, 22], [22, 5], [22, 50], [122, 50], [330, 3], [4, 400], [34, 56], [3, 44]]
如果max(A),返回的是[330, 3]
想要获取 [4, 400]这组数(也就是第二列400最大),如何做呢?
如下:
max(A,key=lambda x:x[1])
[4, 400]
其中lambda表达式返回的key这个关键字参数是内置的,换做其他的就会出错,迭代的就是第二列的值
当然我们一般转化成numpy来处理要方便点:
NA=np.array(A)
max(NA,key=lambda x:x[1])
array([ 4, 400])
获取第二列最大值:
max(NA,key=lambda x:x[1])[1]
400
熟悉pandas,处理数据就更加直观简单。
- import pandas
-
- pd.DataFrame(A)
-
- 0 1
- 0 1 2
- 1 12 22
- 2 22 5
- 3 22 50
- 4 122 50
- 5 330 3
- 6 4 400
- 7 34 56
- 8 3 44
-
- pd.DataFrame(A)[1]
-
- 0 2
- 1 22
- 2 5
- 3 50
- 4 50
- 5 3
- 6 400
- 7 56
- 8 44
- Name: 1, dtype: int64
-
- pd.DataFrame(A)[1].max()
-
- 400
结果和Excel表格一样的直观