查找 2d numpy 数组每行中的最小非零值

Usm*_*riq 4 python arrays numpy

我试图在 2d numpy 数组的每一行中找到最小的非零值,但尚未找到一个优雅的解决方案。我看过其他一些帖子,但没有一个解决完全相同的问题,例如 2d 数组中的最小值或1d 数组中排除零的最小/最大值。
例如对于给定的数组:

x = np.array([[3., 2., 0., 1., 6.], [8., 4., 5., 0., 6.], [0., 7., 2., 5., 0.]])
Run Code Online (Sandbox Code Playgroud)

答案是:

[1., 4., 2.]
Run Code Online (Sandbox Code Playgroud)

Sco*_*ton 6

一种方法是将零重新分配给 np.inf,然后每行取最小值:

np.where(x>0, x, np.inf).min(axis=1)
Run Code Online (Sandbox Code Playgroud)

输出:

array([1., 4., 2.])
Run Code Online (Sandbox Code Playgroud)