假设我有一个像 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/