Python Learning
33.5K subscribers
1.95K photos
8 videos
7 files
953 links
№ 4974297878

Обучающий канал по Python

Ссылка для друга - https://t.me/+I7jrAQKR5xAyYTAy

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Python_per_month
Download Telegram
👍13👨‍💻9🤔51🥰1
Хотели бы вы видеть на канале посты на тему “Машинное обучение и нейронные сети на Python”?
Anonymous Poll
77%
Да, конечно
11%
Нет, я боюсь восстания машин
12%
Админ, у тебя плохое чувство юмора
🗿9👍3🥰3🆒3🔥1🎉1👨‍💻1
Pandas_Cheat_Sheet.pdf
337.8 KB
Шпаргалка по pandas, библиотеке на языке Python для обработки и анализа данных
19👍3
Библиотека Feather

Feather — это библиотека для эффективного чтения и записи таблиц данных в двоичный формат. Она использует формат Apache Arrow для сериализации данных, что позволяет быстро читать и записывать данные без потери информации.

В этом примере мы использовали две основные функции библиотеки:
- feather.write_dataframe(): записывает таблицу данных в файл формата Feather.
- feather.read_dataframe(): читает таблицу данных из файла формата Feather.

Feather позволяет быстро и эффективно обмениваться данными между Python и R, а также обеспечивает быстрое чтение и запись таблиц данных на диск.
👍112🎉2
Построение горизонтальной гистограммы с помощью seaborn

Слева представлен код для построения гистограммы, справа результат работы нашей программы.
👍102🎉2
Введение в машинное обучение с помощью scikit-learn (перевод документации)

Смотреть статью
👍81🗿1
PyTorch

PyTorch — это библиотека машинного обучения, разработанная Facebook
. Она позволяет создавать нейронные сети и обучать их на графических процессорах, что ускоряет процесс обучения и улучшает точность моделей.

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

При этом мы используем функцию потерь CrossEntropyLoss, которая подходит для задач классификации, и оптимизатор SGD.
👍8🔥2🎉1🏆1
Задача

У вас есть девять цифр: 1, 2, …, 9. Именно в таком порядке. Вы можете вставлять между ними знаки «+», «-» или ничего. У вас будут получаться выражения вида 123+45-6+7+89. Найдите все из них, которые равны 100.

Мне кажется, в таком виде его проще всего и писать и читать и тестировать. Тут у меня три функции: all_combinations — итератор, который выдает все числа для операций (в терминах задачи: вставляет пустые места); all_signs — выдаёт все возможные сочетания знаков + и - заданной длинны (для единообразия, это тоже итератор с рекурсией); perform_operations — выполняет операции.

Тут, конечно, просится решение, избавленное от if-ов и кодирования операций с помощью символов. Но это решение будет более громоздким, о нём можно рассказать, но и писать, и читать его дольше.
👍18🏆31
Бинарный поиск

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

В этом примере функция binary_search принимает отсортированный массив arr и искомый элемент target. Она ищет элемент в массиве и возвращает его индекс, если он найден, и -1, если элемент отсутствует. Каждая итерация сужает диапазон поиска путем сравнения среднего элемента с искомым элементом и сдвига границ поиска в соответствии с результатом сравнения.
👍9🎉1🏆1
exceptions

В Python и многих других языках программирования, exceptions (исключения) — это механизм, который позволяет обрабатывать ошибки и нестандартные ситуации во время выполнения программы. Когда возникает ошибка, Python генерирует исключение. Если исключение не обрабатывается, программа может завершиться с ошибкой.

В данном примере кода, операция x = 10 / 0 вызовет исключение ZeroDivisionError, так как нельзя делить на ноль. Однако благодаря конструкции try и except, программа не завершится с ошибкой. Вместо этого будет выведено сообщение «Произошла ошибка деления на ноль!».
👍8🎉2👨‍💻2🏆1
introspection

introspection — это способность программы анализировать свой собственный код и структуру во время выполнения. Это позволяет получать информацию о объектах, модулях, функциях, классах и других аспектах программы без необходимости заранее знать о них статически.

Например, в Python вы можете использовать функции и атрибуты, такие как dir(), type(), getattr(), hasattr(), locals(), globals() и другие, чтобы получить информацию о переменных, объектах и их атрибутах. Это может быть полезно при отладке, создании обобщенных функций или динамической загрузке модулей.
👍12🎉1🏆1
Метакласс

Метакласс (metaclass) в Python — это класс, который определяет поведение других классов, которые являются его экземплярами. В некотором смысле метакласс можно рассматривать как «класс для классов». Он задает правила и ограничения для создания и работы классов.

В Python метаклассы используются для контроля процесса создания классов, изменения их атрибутов и методов, а также для внесения различных модификаций в поведение классов и их экземпляров. Они предоставляют мощный инструмент для метапрограммирования, то есть программирования на уровне создания программного кода.
👍14
Как работает thread locals?

Thread-local storage обеспечивает механизм для сохранения данных, которые будут доступны только в рамках определенного потока выполнения. Это полезно, когда вы хотите иметь раздельные данные для каждого потока, но не хотите делить их между разными потоками.

Вы можете использовать класс threading.local(), чтобы создать объект, который будет представлять thread-local storage. В этом объекте вы можете хранить любые данные, и они будут видимы только для текущего потока. Каждый поток будет иметь свою собственную копию объекта threading.local().
👍16
Дескрипторы

Дескрипторы — это механизм, который позволяет контролировать доступ к атрибутам классов. Они предоставляют способ определения специальных методов для доступа, присваивания и удаления атрибутов. Дескрипторы часто используются для реализации логики, связанной с доступом к данным, внутри классов.

Для создания дескриптора нужно определить класс, который реализует хотя бы один из трех вышеуказанных методов. Затем экземпляры этого класса могут быть присвоены атрибутам других классов.
👍9
Фабричный метод

Фабричный метод (Factory Method) — это паттерн проектирования, который позволяет создавать объекты определенного типа через интерфейс или базовый класс, но делегирует фактическое создание конкретных объектов подклассам. Это способ позволяет легко добавлять новые типы объектов без изменения существующего кода.

Пример на картинке показывает основы паттерна «Фабричный метод» в Python. В реальных ситуациях можно создавать более сложные иерархии продуктов и создателей, чтобы обеспечить более гибкую и расширяемую структуру кода.
👍8🏆1
Что такое _slots_?

__slots__ — это особый атрибут класса, который позволяет определить ограниченное множество атрибутов (полей) для экземпляров данного класса. Использование __slots__ может существенно снизить расход памяти для объектов класса и ускорить доступ к атрибутам, но оно также вносит некоторые ограничения и ограничения.

Обычно вы можете добавлять атрибуты к объектам класса динамически, потому что они хранятся в словаре. Однако это может вызвать избыточные затраты на память и небольшое замедление доступа к атрибутам из-за поиска по словарю. Атрибуты, определенные через __slots__, фактически резервируют место в памяти напрямую в экземпляре класса, что уменьшает объем памяти, требуемый для хранения объектов.
👍141🔥1
__init__

__init__ является методом, который используется для инициализации объектов при создании экземпляров классов. Этот метод называется «конструктором» класса и выполняется автоматически при создании нового объекта данного класса.

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

#для_начинающих
👍14🎉2🗿1
Паттерн проектирования «Фасад»

Паттерн проектирования «Фасад» (Facade) используется для предоставления унифицированного интерфейса к группе интерфейсов подсистемы. Он позволяет скрыть сложность и детали взаимодействия между различными компонентами системы, предоставляя клиенту более простой и удобный способ взаимодействия.

#для_продвинутых
👍204
dict comprehension

dict comprehension — это способ создания нового словаря путем применения выражения к каждому элементу другой последовательности, такой как список, кортеж или другой словарь. Это похоже на генератор списков, но результатом является словарь вместо списка.

#для_начинающих
👍15