Как найти большее число любого выбранного номера в серии в порядке возрастания в NumPy? - PullRequest
1 голос
/ 15 мая 2019

У меня есть серия случайных чисел.Я хочу выбрать число (скажем, X), а затем найти и написать числа больше, чем X, в порядке возрастания.Я использую Python и NumPy.

ПРИМЕР:

Series of random numbers:

4, 8, 5, 9, 3, 11, 17, 19, 9, 15, 16


X=4, Then:

4, 8, 9, 11, 17, 19


X=8, Then:

8, 9, 11, 17, 19


X=3, Then:

3, 11, 17, 19

Обратите внимание, что когда мы выбираем X, мы хотим поставить X в начале восходящего ряда, что означает, чтоcount должен начинаться с X.

Также обратите внимание, что мы не хотим сортировать числа с точки зрения их положения.Нет изменения позиции в числах.Только чтение и запись чисел в порядке возрастания.Следующие числа в последовательности, которые меньше X, следует игнорировать.Спасибо.

РЕДАКТИРОВАТЬ:

def get_elements(get_from,get_by):
    return [ (get_from[i], i ) for i in range(len(get_from)) if get_by[i] == 0 ]



def ordered_position():
    ordered_lst = [0] *len(data_arr)
    new_val = 1
    while True:
        print(new_val)
        ge = get_elements(data_arr,ordered_lst)
        if new_val >= len(data_arr) or not ge: break
        first_val, idx_fist_val = ge.pop(0)
        ordered_lst[idx_fist_val] = (first_val,new_val)
        for item, idx in ge:
            if data_arr[idx] >= first_val:
                ordered_lst[idx] = (first_val,new_val)
                first_val = item
        new_val += 1

    return ordered_lst

1 Ответ

0 голосов
/ 15 мая 2019

Вы можете использовать np.maximum.accumulate примерно так ::

a = np.array([4, 8, 5, 9, 3, 11, 17, 19, 9, 15, 16])
X = 4
withreps = np.maximum.accumulate(a[np.argmax(a==X):])
result = withreps[np.where(np.diff(withreps, prepend=withreps[0]-1))]
result
# array([ 4,  8,  9, 11, 17, 19])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...