在numpy数组中查找包含最大值的行或列

时间:2012-07-04 15:47:19

标签: python numpy

如何在2d numpy数组中找到包含数组范围最大值的行或列?

5 个答案:

答案 0 :(得分:14)

如果你只需要一个或另一个:

np.argmax(np.max(x, axis=1))
列的

np.argmax(np.max(x, axis=0))

表示行。

答案 1 :(得分:12)

您可以使用np.where(x == np.max(x))

例如:

>>> x = np.array([[1,2,3],[2,3,4],[1,3,1]])
>>> x
array([[1, 2, 3],
       [2, 3, 4],
       [1, 3, 1]])
>>> np.where(x == np.max(x))
(array([1]), array([2]))

第一个值是行号,第二个数字是列号。

答案 2 :(得分:5)

您可以在

中使用np.argmaxnp.unravel_index
x = np.random.random((5,5))
print np.unravel_index(np.argmax(x), x.shape)

答案 3 :(得分:1)

np.argmax只返回展平数组中(第一个)最大元素的索引。因此,如果你知道数组的形状(你做了),你可以很容易地找到行/列索引:

A = np.array([5, 6, 1], [2, 0, 8], [4, 9, 3])
am = A.argmax()
c_idx = am % A.shape[1]
r_idx = am // A.shape[1]

答案 4 :(得分:0)

您可以直接使用import ssl; ssl.OPENSSL_VERSION

该示例是从the official documentation复制而来的。

enter image description here

np.argmax()用于查找每一列中的最大值,而axis = 0用于查找每一行中的最大值。返回值是列/行索引。