我想从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])