函数可以从数组的行中找到最小数字大于零的数字,然后将其存储到列表中



我想从9x9数组A的行中找出最小数字,然后存储在列表m中。但是我想排除零。我制作的程序最少返回零。

m = []
def find (L):
    for i in range(len(L)):
            m.append(A[L[i]].min()) 
c = [2,3,4,5,6];
find(c)
print m

这是一个numpy解决方案 -

np.where(a>0,a,a.max()).min(1)

样本运行 -

In [45]: a
Out[45]: 
array([[0, 4, 6, 6, 1],
       [3, 1, 5, 0, 0],
       [6, 3, 6, 0, 0],
       [0, 6, 3, 5, 2]])
In [46]: np.where(a>0,a,a.max()).min(1)
Out[46]: array([1, 1, 3, 2])

如果您想沿L中的行指定的选定行执行此操作。

def find(a,L): 
    return np.where(a[L]>0,a[L],a.max()).min(1)

样本运行 -

In [62]: a
Out[62]: 
array([[0, 4, 6, 6, 1],
       [3, 1, 5, 0, 0],
       [6, 3, 6, 0, 0],
       [0, 6, 3, 5, 2]])
In [63]: L = [2,3]
In [64]: find(a,L)
Out[64]: array([3, 2])

最新更新