Numpy:将每行最大值右侧的矩阵的所有值设置为该行的最大值

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

基本上,我正在寻找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.arange(M.shape[1]) > argmaxes[:,None],
         maxes[:,None], 
         M)

似乎它走上了正确的轨道;也许这是
@numba
tooTime测试这个的一个机会。对于delete
np.maxium.acculate
答案中的小例子,这比OP慢。我不知道为什么要删除
acculate
答案。它很快。