python - 如何取消除 argmax 之外的所有条目?

标签 python arrays numpy

假设我有一个像 a=[1,2,3,4,5] 这样的矩阵/数组/列表,我想取消除最大值之外的所有条目,所以它将是 a=[0,0,0,0,5]

我正在使用 b = [val if idx == np.argmax(a) else 0 for idx,val in enumerate(a)] 但是否有更好(更快)的方法(特别是对于超过 1-dim 的数组...)

最佳答案

您可以使用 numpy 作为就地解决方案。请注意,下面的方法将使 所有 匹配最大值等于 0。

import numpy as np

a = np.array([1,2,3,4,5])

a[np.where(a != a.max())] = 0

# array([0, 0, 0, 0, 5])

有关唯一最大值,请参阅 @cᴏʟᴅsᴘᴇᴇᴅ's solution .

关于python - 如何取消除 argmax 之外的所有条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49412136/

相关文章:

python - 如何在 python docx 中将修改的段落加粗

python - 广播在这个 numpy 的例子中是如何应用的?

python - 使用 np.load 和 np.save 从磁盘加载数组和字典后使用它们

python - 是否可以使用 Jinja 创建 Python 文件

java - 数组中的重复项不得打印多次

javascript - 在数组中查找跨度元素的索引时要搜索什么?

python - 如何将数组添加到现有数组的特定行?

python - numpy:找到矩阵中满足相邻条件的所有数字对

python - Scrapy Spider 抓取部分内容并留下其他内容

arrays - 如何在 Dart 中将对象转换为数组(映射)?