我有一个二维数组,
a= [[ 1 5 9]
[ 5 8 9]
[-9 6 2]]
Run Code Online (Sandbox Code Playgroud)
我想在这个数组中找到第二个最小或最大数字。例如 pad = -9 这是这个数组中的最小值,我想得到最小值 = 1。例如。
if(np.amin(a)== pad):
min = 1
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个返回第二个最小值的行函数。它也应该能够在以下情况下找到答案:
k = [-999. -999. -999. -999. 43. 40. -999. 14. 15.]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,当我们排序时
k = [-999. -999. -999. -999. -999. 14. 15. 40. 43.]
min = 14
Run Code Online (Sandbox Code Playgroud)
更新 1
nodatavalue = -999.0
if(np.amin(k) == nodatavalue):
np.amin(np.array(a)[a != np.amin(a)])
else:
np.amin(k)
Run Code Online (Sandbox Code Playgroud)
由于您使用的是 numpy:a != np.amin(a)将为您提供所有不等于最小值的元素的索引数组。您可以使用它来屏蔽最小值,然后调用amin被屏蔽的数组来获得答案:
np.amin(np.array(a)[a != np.amin(a)])
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的输入是 numpy 数组(而不是 python 列表),则不需要额外调用np.array,只需:
np.amin(a[a != np.amin(a)])
Run Code Online (Sandbox Code Playgroud)
编辑:如果您想在不考虑特定值的同时找到最小值,您可以只使用该值来生成索引数组:
np.amin(a[a != nodatavalue])
Run Code Online (Sandbox Code Playgroud)
请注意,如果您在问题中第一次询问您实际需要什么,这会有所帮助。请参阅如何询问有关编写有用且清晰的问题的提示!
| 归档时间: |
|
| 查看次数: |
5902 次 |
| 最近记录: |