Рубрики
Без рубрики

Как фильтровать в Python с помощью функций лямбда?

Реальные данные – это шумно. Но в качестве ученого данных вам платят, чтобы избавиться от шума, сделать данные доступными и создавать значение. Таким образом, фильтрация данных имеет жизненно важно для реальных научных задач данных. В этой статье вы узнаете, как создать минимальную функцию фильтра в одной строке кода. Я сначала … Как фильтровать в Python с помощью функций лямбда? Читать далее “

Автор оригинала: Chris.

Реальные данные – это шумно. Но в качестве ученого данных вам платят, чтобы избавиться от шума, сделать данные доступными и создавать значение. Таким образом, фильтрация данных имеет жизненно важно для реальных научных задач данных.

В этой статье вы узнаете, как создать минимальную функцию фильтра в одной строке кода. Я сначала даю вам код и объясню основы позже.

# Option 1
my_list = [x for x in my_list if x.attribute == value]

# Option 2
my_list = filter(lambda x: x.attribute == value, my_list)

А Популярные Pustoverflow Ответ обсуждает, какие из решений лучше. На мой взгляд, первый вариант лучше, потому что понимание списка очень эффективно, нет никаких вызовов функций, и у него есть меньше персонажей. 🤓.

Но это только мое мнение. Прокомментируйте свое мнение в конце статьи!

Основы

Так как создать функцию в одной строке? Функция лямбда твой друг! Функции лямбда – это анонимные функции, которые могут быть определены в одной строке кода. Если вы хотите узнать больше о функциях Lambda, ознакомьтесь с этой 3-минутной статьей.

lambda  : 

Вы определяете разделенный запятыми список аргументов, которые служат входным. Функция лямбда затем оценивает выражение и возвращает результат выражения.

Без дальнейшего обсуждения оснований, давайте рассмотрим, как решить следующую проблему науки о данных, создав функцию фильтра, используя определение функции лямбда.

Код

Рассмотрим следующую проблему: «Создайте функцию фильтра, которая принимает список книг X и минимальный рейтинг Y и возвращает список потенциальных бестселлеров, которые имеют выше, чем минимальный рейтинг Y ‘> Y.

## Dependencies
import numpy as np


## Data (row = [title, rating])
books = np.array([['Coffee Break NumPy', 4.6],
                  ['Lord of the Rings', 5.0],
                  ['Harry Potter', 4.3],
                  ['Winnie Pooh',  3.9],
                  ['The Clown of God', 2.2],
                  ['Coffee Break Python',  4.7]])


## One-liner
predict_bestseller = lambda x, y : x[x[:,1].astype(float) > y]


## Results
print(predict_bestseller(books, 3.9))

Угадайте, что вывод этого кода фрагмент?

Результат

Данные состоят из двумерного применения Numpy, где каждая строка содержит название заголовка книги и средний рейтинг пользователя (номер с плавающей запятой от 0,0 до 5,0). В наборе номинальных данных есть шесть разных книг.

Цель состоит в том, чтобы создать функцию фильтра, которая принимает в качестве ввода такую рейтинг книги набор данных x и пороговой рейтинг Y и возвращает последовательность книг, чтобы книги имеют более высокий рейтинг, чем порог y.

Одноклассник достигает этой цели, определив анонимную функцию лямбда, которая просто возвращает результат следующего выражения:

x[x[:,1].astype(float) > y]

Предполагается, что массив «X» имеет форму, такую форму, как наша рейтинговая книга «Книги».

Во-первых, мы выделяем второй столбец, который удерживает рейтинги книги и преобразует ее на массив поплавка, используя метод ASTYPE (FLOAT) на Numpy Array «X». Это необходимо, потому что начальный массив «X» состоит из смешанных типов данных (поплавок и струн).

Во-вторых, мы создаем логический массив, который содержит значение «True», если книга в соответствующем индексе строки имеет рейтинг больше, чем «Y». Обратите внимание, что поплавок «y» неявно транслируется на новой Numpy Array, чтобы обе операнды логического оператора «>» имеют одинаковую форму.

В-третьих, мы используем логическое массив в качестве массива индексации в исходном массиве рейтинга книги, чтобы вырезать все книги, которые имеют более пороговые рейтинги.

Результатом этого одноклассника является следующий массив:

## Results
print(predict_bestseller(books, 3.9))
"""
[['Coffee Break NumPy' '4.6']
 ['Lord of the Rings' '5.0']
 ['Harry Potter' '4.3']
 ['Coffee Break Python' '4.7']]
"""

Финальные ноты

Эта статья основана на книге «Coffe Break Numpy», который я соавторен в 2019 году. Он использует научно проверенный метод обучения под названием «обучение на основе головоломки». Решив Numpy Puzzles, вы улучшите свои навыки Numpy и узнаете о своем истинном уровне навыков по сравнению с другими кодерами. Проверьте это, это весело!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.