nthy中的轴心胜者全能的pythonic方式

Ala*_*_AI 9 python numpy

我想知道什么是最简洁和pythonic的方法,只保留2D numpy数组的每一行中的最大元素,同时将所有其他元素设置为零.例:

给出以下numpy数组:

a = [ [1, 8, 3 ,6],
      [5, 5, 60, 1],
      [63,9, 9, 23] ]
Run Code Online (Sandbox Code Playgroud)

我希望答案是:

b = [ [0, 8, 0, 0],
      [0, 0, 60, 0],
      [63,0, 0, 0 ] ]
Run Code Online (Sandbox Code Playgroud)

我可以想到几种方法来解决这个问题,但我感兴趣的是,是否有python函数可以很快解决这个问题

先感谢您

ali*_*i_m 10

您可以使用np.max沿一个轴取最大值,然后使用np.where将非最大元素归零:

np.where(a == a.max(axis=1, keepdims=True), a, 0)
Run Code Online (Sandbox Code Playgroud)

keepdims=True参数在获取max(即这样a.max(1, keepdims=True).shape == (3, 1))后保持单例维度,这简化了广播a.