Как создать список с заданным числом последних значений?
В списке:
a = [np.nan,np.nan,8,np.nan,6,np.nan,np.nan,9,np.nan,
np.nan,np.nan,3,np.nan,np.nan,np.nan,np.nan,1,np.nan]
Нужно выбрать последние три значения, чтобы получить новый список:
[9,3,1]
Как это правильно сделать?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Ну хорошо, поверим, что не учебное задание. Как-то так можно с помощью filter и среза:
print(list(filter(lambda x: not np.isnan(x), a))[-3:])
Вывод:
[9, 3, 1]
Наверное, можно было бы как-то и без lambda, но я не знаю, как инвертировать условие фильтрации без неё и не прибегая к дополнительным библиотекам.
С помощью Numpy можно было бы ещё так:
a = np.array(a)
print(a[~np.isnan(a)][-3:])
Вывод:
[9. 3. 1.]
Но в этом случае числа превратятся в np.float из-за np.nan в массиве. Можно их и обратно преобразовать в np.int, если нужно.