屏蔽每列中的最小值

Masking minimum value in every column

我有以下矩阵:

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)

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

总和不需要重新整形为列在轴 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's suggestion use MaskedArray:

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