2013-11-21 4 views
1

HI У меня есть тысячи данных внутри массива. Я могу получить первые данные - наибольшее отрицательное значение (от 10 до 11). Как я могу получить наибольшее отрицательное значение до конца данных?Получение наивысшего отрицательного значения до конца данных

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

Как я могу получить диапазон наибольшего отрицательного значения до конца данных?

Пример получения диапазона первого значения до максимального отрицательного значения

я в состоянии получить от 10 до -10, используя этот метод

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

ответ

2

Я не могу точно сказать, что вы спрашивая.

Вы только просите 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

Вы, очевидно, получили несколько ответов.

Я укажу, что если вы хотите найти минимум или максимум больших наборов чисел, часто лучше использовать дерево, кучу или 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. Также есть что-то, называемое кучей min-max, для O (1) время как для min, так и для max, но я не видел ни одного реализованного в Python.

Смежные вопросы