Numpy 按列将满足条件的所有值设置为零

Numpy 按列将满足条件的所有值设置为零,numpy,dataframe,conditional-statements,setvalue,Numpy,Dataframe,Conditional Statements,Setvalue,我有一个如下所示的数组: M=np.array([[1,2,3],[4,9,2],[3,5,6],[8,1,3]]) 对于每一列,我想将两个最小的值设置为零 所以我把它们按降序排序,我知道升序会更快 M1 = np.sort(M, axis=0)[::-1] 然后我想用像 for column in range(M.shape[1]): for row in range(M.shape[0]): if M[row, c

我有一个如下所示的数组:


    M=np.array([[1,2,3],[4,9,2],[3,5,6],[8,1,3]])

对于每一列,我想将两个最小的值设置为零

所以我把它们按降序排序,我知道升序会更快


    M1 = np.sort(M, axis=0)[::-1]

然后我想用像


    for column in range(M.shape[1]):
        for row in range(M.shape[0]):
            if M[row, column] < M1[1,column]:        
                M[row, column] = 0

如何使最后一部分对阵列或数据帧更有效?

试试:

M[M [[0 0 3] [4 9 0] [0 5 6] [8 0 3]] 尝试:

M[M [[0 0 3] [4 9 0] [0 5 6] [8 0 3]]
您可以在此处使用遮罩,该遮罩由以下各项构成:

M < M1[1,:]

您可以在此处使用遮罩,该遮罩由以下各项构成:

M < M1[1,:]

这是M1[1,…]还是M1[row,…]?@WillemVanOnsem嘿,我不确定我是否理解你的意思。你能详细解释一下吗?这是M1[1,…],还是M1[row,…]?@WillemVanOnsem嘿,我不确定我是否理解你的意思。你能详细解释一下吗?谢谢你,威廉·范·昂森。这就是我要找的。我只是不知道如何在专栏中掩饰。但这似乎相当简单。谢谢你,威廉·范·昂森。这就是我要找的。我只是不知道如何在专栏中掩饰。但这似乎相当简单。
M < M1[1,:]
M[M < M1[1,:]] = 0