如何从二维数组+最大值索引中获取每一列的最大值

时间:2018-07-05 12:48:14

标签: python arrays

例如,我有

A = [[1 2 3 4 5]
     [2 4 5 8 7]
     [9 8 4 5 2]
     [1 2 4 7 2]
     [5 9 8 7 6]
     [1 2 5 4 3]]

所以A的形状=(5,6) 我现在想要的是每列的最大值,并返回结果,例如:

A = [[9 9 8 8 7]]的形状为(5,1)

同时,我想从每一列接收最大值的索引。

这可能吗?我没有立即在np.array基本文档中找到解决方案。

2 个答案:

答案 0 :(得分:1)

您可以使用ndarray.max()

axis关键字参数描述了您要沿着哪个轴找到最大值。

keepdims=True可让您保留输入的尺寸。

要获取列中的最大值,可以使用ndarray.argmax()函数。 您也可以通过此函数传递axis参数,但是没有keepdims选项。

在两个命令中,axis=0描述了列,axis=1描述了行。 标准值axis=None将在整个展平数组中搜索最大值。

示例:

import numpy as np

A = np.asarray(
    [[1, 2, 3, 4, 5],
     [2, 4, 5, 8, 7],
     [9, 8, 4, 5, 2],
     [1, 2, 4, 7, 2],
     [5, 9, 8, 7, 6],
     [1, 2, 5, 4, 3]])
print(A)

max = A.max(axis=0, keepdims=True)
max_index = A.argmax(axis=0)

print('Max:', max)
print('Max Index:', max_index)

此打印:

[[1 2 3 4 5]
 [2 4 5 8 7]
 [9 8 4 5 2]
 [1 2 4 7 2]
 [5 9 8 7 6]
 [1 2 5 4 3]]
Max: [[9 9 8 8 7]]
Max Index: [2 4 4 1 1]

答案 1 :(得分:1)

您也可以使用numpy。

示例:

atlas-create-bamboo-plugin