查找数组中排除索引的最大值

use*_*817 5 python arrays numpy

在 Python 中,我有一个包含 10 个数字的列表。我知道我可以通过执行以下操作找到列表中的最大值:

max = numpy.max(list)
Run Code Online (Sandbox Code Playgroud)

我还有一个在查找最大值时不想包含的索引列表。

i.e. exclude_indices = [2,3,7]
Run Code Online (Sandbox Code Playgroud)

所以我想搜索不在索引 2,3 或 7 处的数字列表中的最大值。

我确信以前已经回答过这个问题,但我不知道如何搜索它。

谢谢。

Ash*_*ary 6

您可以使用掩码数组

>>> arr = np.arange(10)
>>> indices = [2, 3, 9]
>>> mask = np.zeros(arr.size, dtype=bool)
>>> mask[indices] = True
>>> a = np.ma.array(arr, mask=mask)
>>> np.max(a)
8
Run Code Online (Sandbox Code Playgroud)

  • `np.zeros(arr.size, dtype=bool)` 会更快 (2认同)