2024-03-29 07:00:46 发布
网友
假设我有一个像a=[1,2,3,4,5]这样的矩阵/数组/列表,并且我想使除max之外的所有条目都为空,所以它应该是a=[0,0,0,0,5]。你知道吗
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)],但是有没有更好(更快)的方法(特别是对于一维以上的数组…)
b = [val if idx == np.argmax(a) else 0 for idx,val in enumerate(a)]
您可以使用numpy作为就地解决方案。请注意,下面的方法将使所有匹配最大值等于0。你知道吗
numpy
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。你知道吗
您可以创建一个零数组,并适当地设置正确的索引,而不是掩蔽?你知道吗
1-D(优化)解决方案
(设置)将a转换为1D数组:a = np.array([1,2,3,4,5])。你知道吗
a
a = np.array([1,2,3,4,5])
只替换max的一个实例
b = np.zeros_like(a) i = np.argmax(a) b[i] = a[i]
替换max的所有实例
b = np.zeros_like(a) m = a == a.max() b[m] = a[m]
N-D解决方案
np.random.seed(0) a = np.random.randn(5, 5)
b = np.zeros_like(a) m = a == a.max(1, keepdims=True) b[m] = a[m]
b array([[0. , 0. , 0. , 2.2408932 , 0. ], [0. , 0.95008842, 0. , 0. , 0. ], [0. , 1.45427351, 0. , 0. , 0. ], [0. , 1.49407907, 0. , 0. , 0. ], [0. , 0. , 0. , 0. , 2.26975462]])
适用于每行max的所有实例。你知道吗
max
您可以使用
numpy
作为就地解决方案。请注意,下面的方法将使所有匹配最大值等于0。你知道吗有关唯一最大值,请参见@cᴏʟᴅsᴘᴇᴇᴅ's solution。你知道吗
您可以创建一个零数组,并适当地设置正确的索引,而不是掩蔽?你知道吗
1-D(优化)解决方案
(设置)将
a
转换为1D数组:a = np.array([1,2,3,4,5])
。你知道吗只替换max的一个实例
替换max的所有实例
N-D解决方案
适用于每行
max
的所有实例。你知道吗相关问题 更多 >
编程相关推荐