我在数组中有数千个数据。我能够获得第一个数据 - 最大的负值(10到-11)如何获得最大的负值,直到数据结束?
Field = [10, 5, 0, -5, **-11, -8, -5, 0, 5, 15]**
如何获得数据末尾的最大负值范围?
我可以使用此方法获得10到-10
P-NIP = Field[:Field.index(min(Field)) + 1]
答案 0 :(得分:1)
我无法告诉你的问题。
您只是要求x[x.argmin():]
吗?
例如:
In [1]: import numpy as np
In [2]: x = np.array([5, -1, 3, -11, -9, 2, -10])
In [3]: x[x.argmin():]
Out[3]: array([-11, -9, 2, -10])
如果您有一个列表而不是一个数组,那么您只需x[x.index(min(x)):]
类似于您显示的示例。但是,对于numpy数组,使用argmin
会更有效。
答案 1 :(得分:1)
你显然得到了一些笨拙的答案。
我要指出,如果你想找到大量数字的最小值或最大值,通常最好使用树,堆或treap而不是线性列表/数组。
Python标准库包含一个heapq(堆)模块。我在这里有一个treap实现:https://pypi.python.org/pypi/treap/,以及一个红黑树实现:https://pypi.python.org/pypi/red-black-tree-mod/
简而言之,在大型列表中找到最小值是O(n),而在堆中找到最小值可以是O(1),在treap中找到最小值是O(logn)并找到红黑树中的最小值是O(logn)。但是,堆不会在最小值的同时对最小值起作用 - treap和red-black tree会。还有一种称为最小 - 最大堆的东西,对于最小值和最大值都是O(1)时间,但我没有看到用Python实现的。
答案 2 :(得分:0)
print Field[Field.index(min(Field)):]