16

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

4

5 回答 5

21

如果您只需要其中一个:

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

对于列,和

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

为行。

于 2012-07-04T16:16:02.830 回答
19

您可以使用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]))

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

于 2012-07-04T15:58:16.970 回答
19

您可以使用np.argmaxwith np.unravel_indexas in

x = np.random.random((5,5))
print np.unravel_index(np.argmax(x), x.shape)
于 2012-07-04T16:07:14.447 回答
3

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]
于 2017-01-01T19:06:10.127 回答
-1

你可以np.argmax()直接使用。

该示例是从官方文档中复制的。

在此处输入图像描述

axis = 0是在每一列axis = 1中找到最大值,而在每一行中找到最大值。返回是列/行索引。

于 2019-01-08T04:03:36.053 回答