我有一个2D数组,
a= [[ 1 5 9]
[ 5 8 9]
[-9 6 2]]
我想在此数组中找到第二个最小或最大数字。例如pad = -9这是这个数组中的最低值,我想获得最小值= 1。 实施例
if(np.amin(a)== pad):
min = 1
我正在寻找一个返回第二个最小值的行函数。 它也应该能够在下面的案例中找到答案:
k = [-999. -999. -999. -999. 43. 40. -999. 14. 15.]
在这种情况下,当我们排序
k = [-999. -999. -999. -999. -999. 14. 15. 40. 43.]
min = 14
更新1
nodatavalue = -999.0
if(np.amin(k) == nodatavalue):
np.amin(np.array(a)[a != np.amin(a)])
else:
np.amin(k)
答案 0 :(得分:3)
由于您正在使用numpy:a != np.amin(a)
将为您提供所有元素的索引数组,这些元素不等于最小值。您可以使用它来屏蔽最小值,然后在屏蔽数组上调用amin
以获得答案:
np.amin(np.array(a)[a != np.amin(a)])
请注意,如果您的输入是一个numpy数组(而不是python列表),则不需要额外调用np.array
,只需:{/ p>
np.amin(a[a != np.amin(a)])
编辑:如果要在忽略特定值的同时找到最小值,可以使用该值生成索引数组:
np.amin(a[a != nodatavalue])
请注意,如果您在问题中第一次询问实际需要,这会有所帮助。有关撰写有用且清晰的问题的提示,请参阅How to Ask。