LINUX.ORG.RU

Python в научных вычислениях

 ,


29

6

Доктор физико-математических наук Андрей Грозин прочитал цикл лекций об использовании Python в целях ликвидации безграмотности среди студентов, аспирантов и прочих. Презентации были приготовлены для представления в среде Jupyter. Видеоматериалы лекций с разрешения лектора доступны под свободной лицензией CC-BY-SA. Исходные видеофайлы будут выложены в торрентах позже.

Первая и третья лекция записаны не были. Остальные записаны, как записаны. Лекционные материалы выложены на страничке лектора.

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

  • Лекция 1. Jupiter. Числа. Строки. Списки. (html, ipynb)
  • Лекция 2. Кортежи. Множества. Словари. Функции.(html, YouTube, ipynb)
  • Лекция 3. Объектно-ориентированное программирование. Исключения. (html, ipynb)
  • Лекция 4. Модули. Ввод-вывод, файлы, директории. (html, YouTube, ipynb)
  • Лекция 5. numpy. Одномерные массивы. Операции над одномерными массивами. 2-мерные массивы. Линейная алгебра. Преобразование Фурье. Интегрирование. Дифференциальные уравнения.(html, YouTube, ipynb)
  • Лекция 6. matplotlib. Логарифмический масштаб. Полярные координаты. Экпериментальные данные. Гистограмма. Контурные графики. Images (пиксельные картинки). Трёхмерная линия. Поверхности. (html, YouTube, ipynb)
  • Лекция 7. SymPy (html, ipynb). Многочлены и рациональные функции. Элементарные функции. Структура выражений. Решение уравнений. Ряды. Производные. Интегралы. Суммирование рядов. Пределы. Дифференциальные уравнения. Линейная алгебра. Собственные значения и векторы. Нормальная жорданова форма. Графики. (html, YouTube, ipynb)
  • Лекция 8. iminuit (html, ipynb). cython. Функции. Интерфейс к библиотеке на C. Структуры. cdef классы. Интерфейс к библиотеке на C. (html, YouTube, ipynb)
  • Лекция 9. Интерфейс к библиотеке на C (продолжение). pandas (html, ipynb) — пакет для статистической обработки данных. Series. DataFrame. sh — простой вызов shell-комманд. rpyc — remote python call. pyroot — интерфейс к пакету анализа данных в том числе и данных очень большого объёма ROOT. (YouTube)

>>> YouTube

★★★★★

Проверено: splinter ()

Python rulezz!!! Ваще лучший ЯП. Всякие Go и рядом не стояли.

anonymous ()

Курс интересный. Но применять его на практике я бы не стал. Сам пробовал читать два года назад в похожем порядке. Нифига не усваивается. Если нужен экспресс-метод, нужно сразу давать конкретную предметную область (в моём случае --- проверка гипотез). Просто рассказывать пол семестра Питон и ждать, что они потом эти знания будут использовать в предметной области, не вариант. Жена пробовала на студентах в другом вузе в этом году и пришла к тем же выводам. Все игры в интерпретаторе не оставляют в голове ничего. Пока не доходят до конкретных данных, записанных в файл, прогресса нет.

Vudod ★★★★★ ()
Последнее исправление: Vudod (всего исправлений: 1)
Ответ на: комментарий от Vudod

Проблема в том, что Python приходится использовать на практике. И обычно это выглядит примерно так: нужно сделать страничку дежурного для контроля данных (далее следует список из нескольких десятков параметров и пол десятка их источников которые нужно контролировать и условия, когда страничка должна зажечься красным), знаешь Python? Нет — не важно, делай. Утрирую конечно, но не сильно. Причём, что забавно, предметники (которые хотя бы отдалённо знают что это за параметры и чему они соответствуют), справляют с подобной задачей быстрее чем «чистые» программисты. Потому что технически такого рода задачи несложные, но понимание что важно, а что можно замести под ковёр временами критично.

Так что любой обзор в тему. Как минимум мне он был точно полезен. Если я правильно понимаю, то планируется сделать методичку. И да, кроме лекций были ещё практические занятия.

Evgueni ★★★★★ ()
Последнее исправление: Evgueni (всего исправлений: 1)

Полезный курс. Чем больше студентов и преподавателей перейдут на что-либо с Mathcad'a, тем лучше.

В курсах для своих студентов для численных вычислений я использую Octave. К Python'у пока присматриваюсь.

Мне лично не нравится в IDE для научного Питона ориентированность на Web-интерфейс. Если кто-то подскажет IDE по образу и подобию wxMaxima, то буду благодарен.

DarthVadimius ()
Ответ на: комментарий от DarthVadimius

В смысле IDE? Можно просто python запустить и выполнять в нём команды как в shell или требуется что-то вроде Notebook для обучения? В этом случае Jupiter — это всё, что пока есть.

Evgueni ★★★★★ ()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от Vudod

Все игры в интерпретаторе не оставляют в голове ничего. Пока не доходят до конкретных данных, записанных в файл, прогресса нет.

А вы пробовали сравнивать преподавание C или C++ + сразу давать конкретную предметную область, и преподавание Python + сразу давать кокретную предметную область? Я это к тому, что весьма сомнительна надобность конкретно в языке Python.

anonymous ()
Ответ на: комментарий от anonymous

А вы пробовали сравнивать преподавание C или C++ + сразу давать конкретную предметную область

Не пробовали сами вследствие человеконенавистнической природы таких экспериментов. Тем не менее, хорошо о них наслышаны.

Vudod ★★★★★ ()
Ответ на: комментарий от DarthVadimius

Мне лично не нравится в IDE для научного Питона ориентированность на Web-интерфейс.

Я вообще не понял. Питоном по работе активно пользуюсь с 2009 года, преподаю на нём с 2011. Использовал разные IDE, в том числе много стандартное IDLE и блокнот Geany. Ещё были Komodo Editor и PyCharm. Писл в Kate. Нигде не видел заточенности под веб-интерфейс. Более того, я вообще не видел специальных IDE для научного Питона (если только вы не о специальных виндовых сборках типа Pyzo). Где вы такое чудо откопали?

Vudod ★★★★★ ()
Ответ на: комментарий от Evgueni

В смысле IDE?

Под IDE я имел ввиду то, что запускается по ipython notebook

Можно просто python запустить и выполнять в нём команды как в shell

Про такую функцию знаю.

DarthVadimius ()
Ответ на: комментарий от DarthVadimius

Ну, в принципе есть ещё что-то в emacs: http://www.emacswiki.org/emacs/PythonProgrammingInEmacs#toc25

Никогда не пробовал. Мне, как правило, достаточно текстового редактора и консоли рядом/в нём.

И опять же Jupiter вполне себе можно пользоваться — настроить сервер, а пользователи будут заходить на него из обычного браузера.

Evgueni ★★★★★ ()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от Vudod

Ответ выше. Возможно неточно выразился. Под IDE для научного Питона я имел в виду то, что запускается по ipython notebook . Оно имеет только Web-интерфейс.

DarthVadimius ()
Ответ на: комментарий от DarthVadimius

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

Vudod ★★★★★ ()
Ответ на: комментарий от Vudod

Более того, я вообще не видел специальных IDE для научного Питона (если только вы не о специальных виндовых сборках типа Pyzo). Где вы такое чудо откопали?

М.б. речь про spyder.

Akamanah ★★★★★ ()
Ответ на: комментарий от Akamanah

М.б. речь про spyder.

spyder

Когда я его в последний раз пробовал года два назад, он был ужасен. ИМХО, pycharm/pydev сейчас выглядят лучше.

anonymous ()

Спасибо за материалы!

alex-w ★★★★★ ()
Ответ на: комментарий от anonymous

Кто-нибудь в курсе, планируется ли полноценная многопоточность в Питоне?

totik ()
Ответ на: комментарий от DarthVadimius

Чем больше студентов и преподавателей перейдут на что-либо с Mathcad'a, тем лучше.

Чем Mathcad не устраивает?

anatoly ()
Ответ на: комментарий от Evgueni

Посмотрел последнюю часть лекции 9 про ROOT. Позор. Не знаешь - не рассказывай.

anonymous ()
Ответ на: комментарий от anonymous

А вы пробовали сравнивать преподавание C или C++ + сразу давать конкретную предметную область

Нигде такого не встречал. Обычно так:
курс по сям: вот вам синтаксис, лупы и факториалы
курс по предметной области: вот вам железяка, там половина лупов попросту перепрыгивается, вкл/выкл по желанию левой пятки железяки, еще там надо volatile, __asm__ вставки и gcc magic

unt1tled ★★★ ()

Python серьезно переоценен. Одна и таже задача, написанная на нем или matlab'e (ну или scilab'e) работает на питоне в разы медленнее. Мы тут с товарищем соревновались, решали одно и тоже уравнение одним и тем же методом, я на С, он - на питоне. Может он, конечно, что-то не так там делал, мы же не программисты, но мой вариант просто визуально работал в разы быстрее.

Для разбора входных файлов, построения графиков - да, может и удобно. Для вычислений - однозначно нет.

hotpil ()
Ответ на: комментарий от hotpil

Python серьезно переоценен. Одна и таже задача, написанная на нем...

Но ведь не может же быть так, что питон по всем параметрам хуже C, а люди всё равно на нем пишут. Где-то тут подвох, правильно?

Zeta_Gundam ()
Ответ на: комментарий от vitruss

Ты кто такой? Почему я за тебя должен что-то оплачивать?

anatoly ()
Ответ на: комментарий от Zeta_Gundam

питон по всем параметрам хуже C, а люди всё равно на нем пишут. Где-то тут подвох, правильно?

Правильно, школота и пионерия еще(?) не люди.

ST ()
Ответ на: комментарий от hotpil

Python серьезно переоценен. Одна и таже задача, написанная на нем или matlab'e (ну или scilab'e) работает на питоне в разы медленнее. Мы тут с товарищем соревновались, решали одно и тоже уравнение одним и тем же методом, я на С, он - на питоне. Может он, конечно, что-то не так там делал, мы же не программисты, но мой вариант просто визуально работал в разы быстрее.

Я только одно не понял, почему для доказательства того, что Питон хуже Матлаба и Скилаба, нужно сравнивать питоновскую лобовую реализацию и лобовую реализацию на C? Это признак троллинга или вопиющей неграмотности?

Vudod ★★★★★ ()
Последнее исправление: Vudod (всего исправлений: 1)
Ответ на: комментарий от Vudod

нужно сравнивать питоновскую лобовую реализацию и лобовую реализацию на C

Вроде же ранее выдвигали в качестве достоинства Python быстроту разработки на нём и простоту для малознакомых с программированием людей. Так что сравнивание «лобовых» реализаций как-раз таки корректно, потому как иначе надо ещё потратить кучу времени на оптимизацию «лобового» кода на Python с помощью разнородного набора подпорок и может быть получившийся результат будет не в 100-1000 раз медленнее C, а хотя бы в 5 раз. Но ведь это как-то мало совместимо с «быстроту разработки на нём и простоту для малознакомых с программированием людей».

anonymous ()
Ответ на: комментарий от hotpil

Хорошие статьи, как правильно писать быстрый код на питоне:

Нужно где возможно использовать векторные операции Numpy и Numba.

trycatch ★★★ ()
Ответ на: комментарий от anonymous

Блин, да просто надо использовать numpy и scipy, написанные на C и оптимизированные, а не строчить циклы непосредственно на питоне как обезьяна.

curufinwe ★★★ ()

Мне одному режет глаза заголовок? Напоминает анекдот про «Петька, приборы». Неужели сложно было озаглавить нормально, наподобие «Цикл лекций 'Python в научных вычислениях' выложен в свободный доступ»?

в целях ликвидации безграмотности

Тоже режет глаз. При чём тут безграмотность? «В ознакомительных целях», «в образовательных целях».

Cheater ()

Python лучший - все это знают! А кто говорит иначе, просто завидует.

anonymous ()
Ответ на: комментарий от DarthVadimius

IntelliJ Community Edition со свободным Python-плагином имеет встроенную поддержку Python-notebook, хоть и довольно кривую.

trycatch ★★★ ()
Ответ на: комментарий от anonymous

Вы не разобрались в вопросе. Сравнивая лобовые реализации на Це и Питоне приходят к выводу, что встроенные в Скилаб функции, написанные на Яве, быстрее.

И да, нужно сразу писать в стиле Фортрана, используя векторизацию через numpy. А не в стиле Паскаля, где на всякийй чих нужен цикл. И разработка будет и короче, работать будет быстрее.

Vudod ★★★★★ ()
Ответ на: комментарий от curufinwe

Итак простота и быстрота разработки для незнакомых с программированием людей, которой питонисты постоянно попрекают языки C и C++, вычёркивается из достоинств Python? Что же остаётся?

anonymous ()
Ответ на: комментарий от anonymous

Итак простота и быстрота разработки для незнакомых с программированием людей, которой питонисты постоянно попрекают языки C и C++, вычёркивается из достоинств Python?

Сх^WПочему?

tailgunner ★★★★★ ()
Ответ на: комментарий от anonymous

Остается простота и быстрота разработки для знакомых с программированием людей. И для дружащих с головой людей.

А вообще, векторные операции в numpy намного проще осилить незнакомому с программированием человеку, чем те же операции в виде циклов на C.

curufinwe ★★★ ()
Ответ на: комментарий от tailgunner

Ну как почему, вот я малознакомый с программированием человек, понадобилось мне что-то посчитать, написал «лобовой» код на Python (я же ведь малознаком с программированиям, откуда мне знать где, что, как оптимизировать чтобы быстрее считалось?) и тут выясняется что он медленно работает, в итоге мне придётся тратить время на изучение того какие способы ускорения существуют и как их надо применять, после изучения понадобится переделывать первоначальный код на Python.

Так что в наличии нет ни простоты, ни быстроты разработки, ни быстрой скорости счёта.

anonymous ()
Ответ на: комментарий от anonymous

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

и тут выясняется что он медленно работает

Побольше надуманных примеров без конкретики.

nezamudich ()
Ответ на: комментарий от anonymous

Ну как почему, вот я малознакомый с программированием человек, понадобилось мне что-то посчитать, написал «лобовой» код на Python

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

Так что в наличии нет ни простоты, ни быстроты разработки, ни быстрой скорости счёта.

Для этого тебе придется постараться. Как персонажи выше постарались, например.

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от anatoly

Не дерзи. Я просто показываю причину не использовать Mathcad. Какой смысл учить Mathcad и заранее обрекать себя/работодателя на затраты, если всё равно начинать изучение с нуля и есть достойные альтернативы?

vitruss ★★★ ()
Ответ на: комментарий от anonymous

Ну как почему, вот я малознакомый с программированием человек, понадобилось мне что-то посчитать, написал «лобовой» код на Python

На си или си++ «малознакомый с программированием человек» его бы просто не написал. Так что разница между медленным кодом и никаким.

Im_not_a_robot ()

Питон лучший! Это знают все.

anonymous ()
Ответ на: комментарий от vitruss

Не дерзи.

Папе своему советы давай.

Я просто показываю причину не использовать Mathcad.

www.linux.org.ru/news/doc/12226425#comment-12229441

Ты оплатишь?

Это папа тебя научил подобным образом «показывать причины» ?

Какой смысл учить Mathcad

Его и не надо учить. В нём можно сходу работать.

заранее обрекать себя/работодателя на затраты

Ты о чём вообще? Речь о студентах и преподавателях — а значит, об учебе, а не поиске вакансий.

anatoly ()

Русские физики выбирают Slackware.

Slack ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.