首页 > 解决方案 > 在二维 numpy 数组的每一行中查找最小非零值

问题描述

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

x = np.array([[3., 2., 0., 1., 6.], [8., 4., 5., 0., 6.], [0., 7., 2., 5., 0.]])

答案是:

[1., 4., 2.]

标签: pythonarraysnumpy

解决方案


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

np.where(x>0, x, np.inf).min(axis=1)

输出:

array([1., 4., 2.])

推荐阅读