Как заменить элемент в списках в списке в Python - PullRequest
2 голосов
/ 03 апреля 2020

Теперь я просто хочу заменить минимальное, максимальное значение на x в таблице .... и я не знаю, как ...

for i in table[1:]:
    mn = min(i) if min(i) < mn else mn 
    mx = max(i) if max(i) > mx else mx
    x = (mn+mx)/2

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Должно работать следующее:

def remove_outliers(table):
    mx = max(map(max, table))
    mn = min(map(min, table))
    avg = (mx + mn) / 2

    for row in table:
        row[:] = [avg if x in (mx, mn) else x for x in row]
    # OR
    for row in table:
        for i, x in enumerate(row):
            if x in (mx, mn):
                row[i] = avg

max(map(max, table)): применяет функцию max к каждой строке в table и принимает max всех этих "maxes".

row[:] = ...: назначение среза. Это мутация объекта row. Просто row = ... просто перепривязывает переменную l oop, не затрагивая объект списка, который все еще индексируется с помощью table.

[avg if x in (mx, mn) else x for x in row]: общего понимания условного списка. Довольно очевидный.

0 голосов
/ 03 апреля 2020

Если вы используете numpy, проверьте функцию clip (https://docs.scipy.org/doc/numpy/reference/generated/numpy.clip.html).

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