Numpy:将每行最大值右侧的矩阵的所有值设置为该行的最大值
基本上,我正在寻找numpy原语,它将完成以下for循环执行:Numpy:将每行最大值右侧的矩阵的所有值设置为该行的最大值,numpy,Numpy,基本上,我正在寻找numpy原语,它将完成以下for循环执行: # for a matrix M argmaxes = np.argmax(M,axis=1) for i,arg in enumerate(argmaxes): M[i,arg:] = M[i,arg] 有没有一种简单的方法来实现这一点?下面的方法不会将用于循环,但它会创建几个与M形状相同的中间数组。所以我不确定它在循环中的效率: maxes = np.max(M, axis=1) M = np.where(np.ara
# for a matrix M
argmaxes = np.argmax(M,axis=1)
for i,arg in enumerate(argmaxes):
M[i,arg:] = M[i,arg]
有没有一种简单的方法来实现这一点?下面的方法不会将
用于循环,但它会创建几个与M
形状相同的中间数组。所以我不确定它在循环中的效率:
maxes = np.max(M, axis=1)
M = np.where(np.arange(M.shape[1]) > argmaxes[:,None],
maxes[:,None],
M)
似乎它走上了正确的轨道;也许这是@numba
tooTime测试这个的一个机会。对于deletenp.maxium.acculate
答案中的小例子,这比OP慢。我不知道为什么要删除acculate
答案。它很快。