获得数据结尾的最高负值

时间:2013-11-21 03:09:39

标签: python numpy

我在数组中有数千个数据。我能够获得第一个数据 - 最大的负值(10到-11)如何获得最大的负值,直到数据结束?

Field = [10, 5, 0, -5, **-11, -8, -5, 0, 5, 15]**

如何获得数据末尾的最大负值范围?

获取第一个值到最大负值范围的示例

我可以使用此方法获得10到-10

P-NIP = Field[:Field.index(min(Field)) + 1]

3 个答案:

答案 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)):]