Python Numpy Array Модификация - PullRequest
       3

Python Numpy Array Модификация

0 голосов
/ 06 декабря 2018

У меня есть сюжет у против х.Основываясь на некоторых граничных условиях, я получил список значений x и соответствующих значений y

x = [2, 4, 8, 11, 18, 24, 31]

, соответствующие значения y равны

y = [180, 139, 144, 90, 81, 109, 153]

, на выходе получается массив, которыйвозвращает дважды значение x output = [4, 8, 16, 22, 36, 48, 62]

Моя задача - ограничить конечный выходной массив максимум 5 значениями.Эти значения должны соответствовать 5 самым высоким значениям в массиве y.

Итак, я должен получить

output = [4, 8, 16, 48, 62]

Кроме того, разные наборы данных будут давать разные нет.значений х и у.Итак, если исходный выходной массив имеет значение, меньшее или равное 5, он должен быть напечатан как есть.

Я пытаюсь найти способ сделать это с помощью пары строк кода.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Вы можете переупорядочить массив с помощью

array = sorted(array)

После этого вам просто нужно взять 5 первых членов:

output = array[0:4]

Помните, что нам нужно написать 4 вместо 5, потому чтов измерении массива Python начинается с 0. Вы можете сделать это с меньшим количеством кода:

output = sorted(array)[0:4]
0 голосов
/ 06 декабря 2018

Ваша проблема в основном сводится к вопросу о том, как получить n самых высоких значений массива.Для этого вам понадобится argsort().

if len(y) > 4:
    n_highest = 5
else:
    n_highest = len(y)

y_highest = y.argsort()[-n_highest:][::-1] # this gives you the indices of the five highest values of y

x_out = x[y_highest] * 2

Если вы не хотите, чтобы сортировка x_out осуществлялась, а скорее отражала оригинальную сортировку, вам придется перебирать элемент eatch, спрашиваяесли его индекс найден в y_highest:

x_out = [x[i]*2 for i in range(len(x)) if i in y_highest]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...