【问题标题】:Masking minimum value in every column屏蔽每列中的最小值
【发布时间】:2021-08-05 14:34:55
【问题描述】:

我有以下矩阵:

matrix = np.arange(24).reshape(4,6) 

我想屏蔽每列中的最小值。下面的解决方案在axis=1 时屏蔽了每一行中的最小值,但是在axis=0 时它只屏蔽了第一列中的最小值。

matrix_masked = np.ma.masked_where(matrix == np.resize(matrix.min(axis=0),[matrix.shape[0],1]),matrix)

还有什么我应该改变的吗?

【问题讨论】:

    标签: python arrays numpy mask


    【解决方案1】:

    总和不需要重新整形为列在轴 0 上找到正确的值。

    所以尝试不调整大小:

    import numpy as np
    
    np.random.seed(5)
    matrix = np.random.randint(0, 100, size=(4, 6))
    
    matrix_masked = np.ma.masked_where(matrix == matrix.min(axis=0), matrix)
    
    print("Matrix")
    print(matrix)
    print("Masked Matrix")
    print(matrix_masked)
    
    Matrix
    [[99 78 61 16 73  8]
     [62 27 30 80  7 76]
     [15 53 80 27 44 77]
     [75 65 47 30 84 86]]
    
    Masked Matrix
    [[99 78 61 -- 73 --]
     [62 -- -- 80 -- 76]
     [-- 53 80 27 44 77]
     [75 65 47 30 84 86]]
    

    或者@Corralien的建议使用MaskedArray

    matrix_masked = np.ma.MaskedArray(matrix, matrix == np.min(matrix, axis=0))
    

    【讨论】:

    • 这里与 MaskedArray 相同:np.ma.MaskedArray(matrix, matrix == np.min(matrix, axis=0))
    猜你喜欢
    • 2016-08-12
    • 2013-10-23
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多