Возвращение индекса истинного значения - PullRequest
1 голос
/ 11 июля 2019

для кода, написанного ниже, я хочу напечатать индекс значений в samples_avg, которые возвращают true в maxlist для каждого списка в samples_avg.Таким образом, для списка

samples_avg = [[1, 12, 3], [15000, 4, 3], [1, 144, 45]]

я ожидал бы возвращаемое значение типа

filtered = [[], [0], [1, 2]]

, потому что нет индекса, для которого условие истинно в первом списке, оно истинно в индексе0 для второго списка и значение true для индексов 1 и 2 в последнем списке в пределах samples_avg

samples_avg = [[1, 12, 3], [15000, 4, 3], [1, 144, 45]]
def check(samples_avg):
    filtered = []
    maxval = [max(x) for x in zip(*samples_avg)]
    maxlist = ([r >= (m/5) for row in samples_avg for r, m in zip(row, maxval)])

    results =[[] for i in samples_avg]
    for i in results:
        filtered.append([x for x, y in zip(samples_avg[i], maxlist) if y == True])
        print (np.where((filtered) is True))

В настоящее время возвращается три пустых массива.Как я могу это исправить, чтобы массивы содержали индексы?Любой совет будет принята с благодарностью!

1 Ответ

1 голос
/ 11 июля 2019

только что немного изменил понимание списка, используя перечисление для получения фактического индекса, и используя условие true в предложении if вместо значения map.

попробуйте это:

samples_avg = [[1, 12, 3], [15000, 4, 3], [1, 144, 45]]
def check(samples_avg):
    maxval = [max(x) for x in zip(*samples_avg)]
    return [[i for i,(r, m) in enumerate(zip(row, maxval)) if r >= (m/5)] for row in samples_avg]

print(check(samples_avg))

Выход:

[[], [0], [1, 2]]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...