python - 如何有效过滤矩阵每行的最大元素

标签 python arrays numpy max

给定一个二维数组,我正在寻找一种Python式的方法来获取相同形状的数组,每行只有最大元素。 请参阅下面的 max_row_filter 函数

def max_row_filter(mat2d):
    m = np.zeros(mat2d.shape)
    for r in range(mat2d.shape[0]):
        c = np.argmax(mat2d[r])
        m[r,c]=mat2d[r,c]
    return m

p = np.array([[1,2,3],[5,4,3,],[9,10,3]])
max_row_filter(p)

Out: array([[ 0.,  0.,  3.],
            [ 5.,  0.,  0.],
            [ 0., 10.,  0.]])

我正在寻找一种有效的方法来做到这一点,适合在大数组上完成。

最佳答案

替代答案(这将保留重复项):

p * (p==p.max(axis=1, keepdims=True))

关于python - 如何有效过滤矩阵每行的最大元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54078494/

相关文章:

Python pandas 删除 SettingWithCopyWarning

python - 无法执行 .mp3 文件

python - 复制并替换 numpy 数组中的值。nans 将为 nan,但其他值将为零

python - numpy polyfit 中使用的权重值是多少,拟合误差是多少

python - 总和忽略 Pandas 数据框中的字符串

python - 如何将多个 numpy 2d 数组堆叠到一个 3d 数组中?

python - 在pytest测试开始时创建服务器

c# - 列表<double> 到 ALGLIB 的 double[,]

c - 打印垂直直方图

python - 如何按区间索引分组,在列表列表上聚合均值,并加入另一个数据框?