Hello World – Telegram
Hello World
1.68K subscribers
71 photos
6 videos
3 files
161 links
Be so good that you cannot be ignored. And then, go one step beyond.
Download Telegram
Forwarded from Python Academy
Работа с процессами в Python

С появлением многоядерных процессоров стала общеупотребительной практика распространять нагрузку на все доступные ядра. Существует два основных подхода в распределении нагрузки: использование процессов и потоков. О первом мы как раз сейчас и поговорим.

Читать 6 минут
не одобряем если что
Вам нравится новое лого канала?
Final Results
68%
Да, нравится
32%
Нет, верни предыдущее
Новая рубрика на канале

Вы давно меня просили сделать нечто подобное. Поэтому, предлагаю вашему вниманию задачу с соревнования Яндекса 2019 года:

Дан массив a из n целых чисел. Напишите программу, которая найдет число, которое чаще других встречается в массиве. Ограничение времени: 2 с, ограничение памяти: 256 МБ.

Формат ввода
В первой строке входных данных записано число n (1 ≤ n ≤ 300 000). 
Во второй строке записаны n целых чисел ai (0 ≤ ai ≤ 1 000 000 000).

Формат вывода
Выведите единственное число x, наибольшее из чисел, которое чаще других встречается в массиве a.
​​Начну издалека. Как думаете, правда ли что выучить Python и стать качественным специалистом легко?

Разумеется, у Python довольно низкий порог вхождения. Это означает что на нем очень легко освоить азы программирования. Но по сути, все что можно найти в интернете – это и есть только основы и азы. Они не помогут научиться чему-то основательно.

Поначалу может показаться, что обучение дается легко, но впереди будут ждать трудности. Асинхронное и функциональное программирование, threading, multiprocessing, sockets, метаклассы – все эти темы непросто найти и изучить самостоятельно. При этом не стоит забывать, что помимо теории необходима и практика – минимум 4-6 часов в неделю.

С любовью к обучению и программированию, мы с коллегой открыли @python_academy. Мы вложили собственные средства на развитие этого проекта, и немало сил на создание качественного контента. И это было не зря – мы получаем восторженные отзывы наших учеников. Благодаря вам мы продолжаем работать над качеством нашего материала.

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

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

Более полная информация о ближайшем курсе тут.

Задать вопрос и записаться на курс можно у меня @dartrisen и у моего коллеги @a1f20.
This media is not supported in your browser
VIEW IN TELEGRAM
Собирайте команду и присоединяйтесь к онлайн-хакатону по digital-communications от КРОК - YoHack

C 23 по 26 апреля KPOK собирает кросс-возрастные команды зумеров и бумеров (школьников и студентов, специалистов IT-компаний) для решения проблем digital-коммуникций. 

👨‍💻Сможете поизучать различные тренды сети: создать переводчик мемов, измеритель достоверности информации, анализатор оскорбительности постов или реализовать свою digital-идею.

📲 Регистрация открыта до 20 апреля включительно. 👉 yohack.ru
Hello World
Новая рубрика на канале Вы давно меня просили сделать нечто подобное. Поэтому, предлагаю вашему вниманию задачу с соревнования Яндекса 2019 года: Дан массив a из n целых чисел. Напишите программу, которая найдет число, которое чаще других встречается в массиве.…
Возможное решение для задачи

Посмотреть код

Это довольно таки простая задача, которую можно решить как с использованием обычного словаря, так и с использованием структуры Counter из модуля collections.

Сначала можно посчитать, сколько раз встречается каждый элемент, затем выбрать наибольший из тех, которые встречаются наибольшее число раз.

Решение требует O(n) времени и O(n) дополнительной памяти.

P.S. немного приболел, извините за отсутствие постов, в ближайшее время будет что-нибудь интересное по data science.
​​Последний релиз Python 2.x

Кстати говоря, не так давно вышла последняя версия Python 2.7, а именно Python 2.7.18.

Эта версия является специальным выпуском. Я имею в виду, конечно, тот факт, что "2.7.18" является ближайшим номером версии Python которая примерно равна числу e, или числу Эйлера.

Менее трансцендентное свойство Python 2.7.18 заключается в том, что это последний выпуск Python 2.7. и, следовательно, последний выпуск Python 2.

Любителям CPython пришло время попрощаться с Python 2. Эта версия поддерживалась почти 10 лет параллельно с обратно-несовместимыми версиями Python 3. Теперь же остаётся только одна версия языка, которая продолжит развиваться.

Скачать последнюю версию языка можно по этой ссылке.
Предположим вам приперло вычислить сложный интеграл, а вольфрам математики под рукой не оказалось.

Подобные интегралы с маленькой мнимой частью вычисляются по известной теореме, но обычно для их вычисления необходимо отдельно посчитать интеграл в смысле главного значения по Коши (обычно пишут v.p. ну или p.v.).

Для работы с такими интегралами (и не только) и был создан пакет sympy. В свою очередь, метод subs позволяет подставить какое-то определенное значение. Но для вычисления предела, или если выбранная точка является сингулярной, лучше используйте limit.
you = |gay> + |not gay>

Тут IBM анонсирует свой Quantum Challenge, который кстати говоря начался совсем недавно. Таким образом они празднуют свою четвертую годовщину квантовых вычислений.

Дают 4 дня и 4 задания для проверки своих навыков. Принять вызов можно по этой ссылке. И как я понял, все это можно сделать на вашем любимом языке 🏳️‍🌈.

Я и сам хочу поучаствовать, потому что как теоретик я люблю всякие квантовые штуки (в том числе и нейросети).

Так что занимайте ваши основные состояния и погнали.

P.S. а если вы ничего не смыслите в квантовой механике, не переживайте, даже Фейнман в свое время говорил что по-настоящему ее никто не понимает.
Одноразовая функция в классе

На тот случай, если вдруг понадобится такая функция, которая будет использоваться всего один раз, после чего будет использоваться другая функция, можно воспользоваться таким приемом.

#tips
Основные научные библиотеки Python

Python часто используется для создания академических и научных приложений, поскольку код на нем легко писать и язык имеет высокую производительность.

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

📌 Хотя NumPy является частью проекта SciPy, она содержит лишь базовую функциональность SciPy. NumPy обходит проблему медленных алгоритмов в Python путем использования многомерных массивов и функций, которые работают с этими массивами. 

📌 Matplotlib — это гибкая библиотека для создания интерактивных 2D и 3D графиков. А тем, кто работает со статистикой, стоит взглянуть на Seaborn, более новую библиотеку для работы с графикой, основанную на Matplotlib. Она предназначена для визуализации статистики.
Полезные сниппеты с itertools

Не так давно подписчик в чате поделился своими полезными сниппетами.

group группирует итерируемые объекты в новые объекты размера size, при необходимости заполняя недостающие элементы с помощью fillvalue.

transpose, как очевидно из названия, транспонирует матрицы (а также строки/столбцы различной длины), при необходимости заполняя значения с помощью fillvalue.

Также приложу ссылку на гист.
Мы можем немного ускориться? (с)

Поскольку все методы класса по-умолчанию первым аргументом принимают self, нельзя просто так взять и обернуть метод декоратором vectorize.

Хотя существует несколько способов использования np.vectorize в виде декоратора метода произвольного класса, на мой взгляд самым практичным и удобным является использование partial.

Функция partial – это функция, которая упрощает некоторые элементы функционального программирования, позволяющего например обеспечить частичное применение функции.

Не знаешь что такое vectorize? На моем втором канале @python_academy сегодня будет пост, объясняющий что это такое.

#tips #numpy #vectorize
одобряю
Одной из наиболее полезных библиотек для физиков всех сортов и мастей является LINPACK, или библиотека для работы с линейной алгеброй.

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

Эту библиотеку портировали практически на все известные человечеству языки программирования (например на языке swift, с которым я сейчас работаю, есть модуль Accelerate, основанный на LAPACK и BLAS)

Пакет позволяет работать с матрицами: находить собственные значения и вектора, решения для СЛАУ (системы линейных алгебраических уравнений), и прочее.

#numpy #linalg
​​Основные аспекты численного решения нелинейных уравнений

Нелинейные уравнения, в основном, не могут быть решены аналитически (кроме некоторых частных случаев). В таком случае, имеет смысл рассматривать итеративные алгоритмы нахождения решений.

К примеру, уравнение x = tg(x) является нелинейным. Начальные приближения можно сделать, если читатель имеет представление о ряде Тейлора. Решение x = 0 напрашивается само собой, поскольку тангенс вблизи нуля ведет себя как линейная функция.

Сходимость
Любое нелинейное уравнение в виде f(x) = 0 всегда можно переписать как x = g(x). В данном случае, если задать произвольную стартовую точку x0, это уравнение можно дискретизировать для дальнейшего численного решения:

x_{n+1} = g(x_{n})

Если уравнение на выбранном интервале имеет некоторое решение a, можно оценить порядок сходимости, или точность метода на шаге n:

eps_{n} = x_{n} - a

Рассмотрим ниже простой пример в виде метода хорд и его реализацию на Python. Для проверки возьмем простую функцию f(x) = x * (x + 2) - 1, таким образом данное уравнение можно решить даже аналитически.

Найденное в результате работы скрипта решение сходится к аналитическому результату, с точностью eps = 1e-3.
​​Complex numbers

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

Весь современный аппарат теоретической физики в той или иной мере использует эти числа, к примеру квантовая механика. Кроме того, они используются и в фурье анализе (модуль scipy.fftpack).

Полезная штука в общем. И в вашем любимом языке программирования, к тому же, complex является встроенным типом. Очень удобно. Если же complex недостаточно, можно импортировать cmath.

Прикрепляю пару примеров и убегаю. Мне еще статью по работе доделывать нужно.

By @hw_code