Обновить
1024K+

Python *

Высокоуровневый язык программирования

711,05
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Полезные советы по Python, которых вы ещё не встречали. Часть 2

Время на прочтение7 мин
Охват и читатели39K
Недавно мы опубликовали перевод материала, в котором были приведены полезные советы для Python-программистов. У того материала есть продолжение, которое мы представляем вашему вниманию сегодня.


Читать дальше →

Моделирование работы георадара

Время на прочтение9 мин
Охват и читатели12K
Георадар (радиотехнический прибор подповерхностного зондирования, GPR, Ground Penetrating Radar), применяющийся в настоящее время весьма широко — от картирования нор кроликов и изучения ящериц до поиска мин, остается достаточно дорогим удовольствием.

image

Дисплей георадара (кадр из британской телепередачи «Команда времени»)

Но оценить его возможности и изучить различные аспекты взаимодействия электромагнитного поля георадара со средой можно и без приобретения/аренды «железного» устройства. В этом нам поможет пакет gprMax (gpr — от абреввиатуры GPR, Max — начальные буквы фамилии Джеймса Клерка Максвелла, заложившего основы электродинамики), распространяющийся под лицензией GNU GPL v3.
Авторы этого проекта, начатого в 1996 году — Крэйг Уоррен (Craig Warren) из Нортумбрийского университета и Антонис Джианопулос (Antonis Giannopoulos) из Эдинбургского университета. Пакет был изначально разработан на C, а затем полностью переписан на комбинации Python 3/Cython.

image
Читать дальше →

Автомобили в Голландии: статистика и информация за 2019 год

Время на прочтение6 мин
Охват и читатели20K
Привет, Хабр.

Эта статья является продолжением цикла про Велоинфраструктуру в Голландии. В этот раз речь пойдет про автомобили.



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

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

Продолжение под катом.
Читать дальше →

Как я учу детей Питону

Время на прочтение7 мин
Охват и читатели36K
image

Моя основная работа связана с данными и программированием на R, но в этой статье я хочу рассказать про своё увлечение, которое даже приносит некий доход. Мне всегда было интересно рассказывать и объяснять что-то друзьям, одноклассникам и однокурсникам. Ещё мне всегда просто было находить общий язык с детьми, не знаю, почему. Вообще, я считаю, что воспитание и обучение детей это одно из важнейших занятий из всех, да и жена у меня педагог. В общем, примерно год назад я дал объявление в местной группе на фейсбуке, набрал группу и стал преподавать скратч и питон раз в неделю. Сейчас у меня пять групп, свой класс в доме и индивидуальные занятия. Как я дошёл до жизни такой и как именно я учу детей, я раскажу в этой статье.
Читать дальше →

Добавляем в Jupyter Notebooks красоту и интерактивность

Время на прочтение7 мин
Охват и читатели97K
Многие используют в своей работе Jupyter Notebooks. Но с ростом сложности проекта появляются проблемы. В блокноте появляются ячейки с красными пометками для самого себя «перед запуском укажи число...» или «задай количество итераций исходя из...». Какой-то откат к командной строке получается.

Да и вывод данных на экран не всегда воспринимается без пояснений сторонним человеком, который привык к красивым таблицам, картинкам и прочим современным элементам интерфейса.
Читать дальше →

SVM. Подробный разбор метода опорных векторов, реализация на python

Время на прочтение15 мин
Охват и читатели194K

Привет всем, кто выбрал путь ML-самурая!


Введение:


В данной статье рассмотрим метод опорных векторов (англ. SVM, Support Vector Machine) для задачи классификации. Будет представлена основная идея алгоритма, вывод настройки его весов и разобрана простая реализация своими руками. На примере датасета $Iris$ будет продемонстрирована работа написанного алгоритма с линейно разделимыми/неразделимыми данными в пространстве $R^2$ и визуализация обучения/прогноза. Дополнительно будут озвучены плюсы и минусы алгоритма, его модификации.


image
Рисунок 1. Фото цветка ириса из открытых источников

Читать дальше →

А что, если без Python? Julia для машинного обучения и вообще

Время на прочтение16 мин
Охват и читатели15K
Мы всегда хотим писать код быстро, но за это приходится платить. На обычных высокоуровневых гибких языках можно быстро разрабатывать программы, но после запуска они работают медленно. Например, чудовищно медленно cчитать что-то тяжелое на чистом Python. Си-подобные языки работают гораздо быстрее, но в них легче наделать ошибок, поиск которых сведет весь выигрыш в скорости на нет.

Обычно эта дилемма решается так: сначала пишут прототип на чем-то гибком, например, на Python или R, а потом переписывают на C/C++ или Fortran. Но этот цикл слишком длинный, можно ли обойтись без этого?



Возможно, решение есть. Julia — высокоуровневый и гибкий, но при этом быстрый язык программирования. В Julia есть множественная диспетчеризация, встроенный умный компилятор и инструменты метапрограммирования. Подробнее о том, что есть в Julia, расскажет Глеб Ивашкевич (phtRaveller) — основатель datarythmics, которая занимается разработкой систем машинного обучения для промышленности и других отраслей, в прошлом физик.

Глеб объяснит, зачем нужны новые языки и почему иногда Python не хватает. Расскажет, что в Julia интересного, о ее сильных и слабых сторонах, сравнит с другими языками, и покажет, какая у языка перспектива в машинном обучении и вычислениях вообще.

Дисклеймер. Здесь не будет разбора синтаксиса. Хабражители опытные разработчики, поэтому нет смысла показывать, как написать цикл, например.

TensorRT 6.x.x.x — высокопроизводительный инференс для моделей глубокого обучения (Object Detection и Segmentation)

Время на прочтение9 мин
Охват и читатели30K
image
Больно только в первый раз!

Всем привет! Дорогие друзья, в этой статье я хочу поделиться своим опытом использования TensorRT, RetinaNet на базе репозитория github.com/aidonchuk/retinanet-examples (это форк официальной репы от nvidia, который позволит начать использовать в продакшен оптимизированные модели в кратчайшие сроки). Пролистывая сообщения в каналах сообщества ods.ai, я сталкиваюсь с вопросами по использованию TensorRT, и в основном вопросы повторяются, поэтому я решил написать как можно более полное руководство по использованию быстрого инференса на основе TensorRT, RetinaNet, Unet и docker.
Читать дальше →

Путешествие к центру… docker image. Или как скачать образ из registry без docker

Время на прочтение9 мин
Охват и читатели19K

За 3 дня до нового года появилась задача, передать клиенту наше ПО через менеджера, на флешке. ПО – это микросервисная платформа в несколько десятков docker-образов с множеством настроек и “километровым” helm-чартом. Что мы имели:


  • Менеджер в Москве (я не оттуда)
  • Windows
  • Прямого взаимодействия нет (а если бы и было, то не особо помогло)
  • docker-а нет

Пфф, подумал я! Возьму Golang, напишу программку, скомпилирую под Windows.
… и 5 часов спустя осознал поспешность своих выводов. В тот момент в первый раз вспомнился смех Нельсона. ХА-ХА! Который преследовал меня все то время, что я потратил на изучение вопроса.

Читать дальше →

Python (+numba) быстрее Си — серьёзно?! Часть 2. Практика

Время на прочтение4 мин
Охват и читатели22K

Это вторая часть статьи про numba. В первой было историческое введение и краткая инструкция по эксплуатации numba. Здесь я привожу слегка модифицированный код задачи из статьи про хаскелл «Быстрее, чем C++; медленнее, чем PHP» (там сравнивается производительность реализаций одного алгоритма на разных языках/компиляторах) с более детальными бенчмарками, графиками и пояснениями. Сразу оговорюсь, что я видел статью Ох уж этот медленный C/C++ и, скорее всего, если внести в код на си эти правки, картина несколько изменится, но даже в этом случае то, что питон способен превысить скорость си хотя бы в таком варианте, само по себе является примечательным.


Читать дальше →

Python (+numba) быстрее Си — серьёзно?! Часть 1. Теория

Время на прочтение7 мин
Охват и читатели94K

Давно собирался написать статью о numba и о сравнении её быстродействия с си. Статья про хаскелл «Быстрее, чем C++; медленнее, чем PHP» подтолкнула к действию. В комментариях к этой статье упомянули о библиотеке numba и о том, что она магическим образом может приблизить скорость выполнения кода на питоне к скорости на си. В данной статье после небольшого обзора по numba (часть 1) чуть более подробный разбор этой ситуации (часть 2).


Читать дальше →

Docs as code против или вместе с Confluence? Обзор нескольких способов публикации из репозитория в Confluence

Время на прочтение7 мин
Охват и читатели19K
Многие уже давно или активно используют или смотрят в сторону модели хранения и публикации документации как кода, это значит применять к документации все те же правила, инструменты и процедуры, что и к программному коду, например, хранить в репозитории, прогонять тесты, собирать и релизить в CI/CD. Этот подход позволяет поддерживать документацию актуальной к коду, версионировать и отслеживать изменения, используя привычные инструменты разработки.

Однако в то же время во многих компаниях годами существуют также и вики-системы, в которых к документации получают доступ другие команды и сотрудники, например, менеджеры проектов. Что если вам захотелось привести хранение и публикацию к единому виду, то есть наряду с HTML публиковать доки и в Confluence? В этой статье я дам обзор решений задачи публикации документов из репозитория в Confluence.
Читать далее

Подборка @pythonetc, декабрь 2019

Время на прочтение3 мин
Охват и читатели5.7K


Новая подборка советов про Python и программирование из моего авторского канала @pythonetc.

Предыдущие публикации


Очевидно, что разные asyncio-задачи используют разные стеки. Можно в любой момент просмотреть их все, получив с помощью asyncio.all_tasks() все выполняемые сейчас задачи, а с помощью task.get_stack() получив стеки для всех задач.
Читать дальше →

Ближайшие события

Разработка чрезвычайно быстрых программ на Python

Время на прочтение7 мин
Охват и читатели72K
Ненавистники Python всегда говорят, что одной из причин того, что они не хотят использовать этот язык, является то, что Python — это медленно. Но то, что некая программа, независимо от используемого языка программирования, может считаться быстрой или медленной, очень сильно зависит от разработчика, который её написал, от его знаний и от умения создавать оптимизированный и высокопроизводительный код.



Автор статьи, перевод которой мы сегодня публикуем, предлагает доказать то, что те, кто называет Python медленным, неправы. Он хочет рассказать о том, как улучшить производительность Python-программ и сделать их по-настоящему быстрыми.
Читать дальше →

Хаос зависимостей в Python

Время на прочтение11 мин
Охват и читатели23K
Знакомы ли вы с историей Python packaging? Ориентируетесь ли в форматах пакетов? Знаете ли, что распутывать клубок зависимостей придется даже когда кажется, что вот оно чудо — zero dependency? Уверен, что знакомы со всем этим не так хорошо, как автор библиотеки DepHell.



Мне удалось поговорить с Никитой Вороновым, больше известным как Gram или orsinium, и расспросить его о теме будущего доклада, болях плохих решений резолвинга зависимостей, о DepHell, pip, принципе first match wins, о Гвидо, Pipfile, инкрементальном развитии Python и будущем экосистемы.
Читать дальше →

Keras Functional API в TensorFlow

Время на прочтение17 мин
Охват и читатели24K


В Keras есть два API для быстрого построения архитектур нейронных сетей Sequential и Functional. Если первый позволяет строить только последовательные архитектуры нейронных сетей, то с помощью Functional API можно задать нейронную сеть в виде произвольного направленного ациклического графа, что дает намного больше возможностей для построения сложных моделей. В материале перевод руководства, посвященного особенностям Functional API, с сайта TensorFlow.
Читать дальше →

Что принёс нам Pandas 1.0

Время на прочтение2 мин
Охват и читатели14K


9 января состоялся релиз Pandas 1.0.0rc. Предыдущая версия библиотеки — 0.25.


Первый мажорный релиз содержит множество замечательных нововведений, в том числе улучшенное автоматическое суммирование датафреймов, больше форматов вывода, новые типы данных и даже новый сайт документации.


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

Читать дальше →

Разработка идеального pypi пакета с поддержкой разных версий python

Время на прочтение15 мин
Охват и читатели24K

Это небольшой мануал/история о том, как создать "идеальный" pypi пакет для python, который каждый желающий сможет установить заветной командой:


pip install my-perfect-package

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

Читать дальше →

Что такое *args и **kwargs в Python?

Время на прочтение4 мин
Охват и читатели543K
Функции — это жизнь. Правда? Если вы только начали осваивать Python, неважно — первый ли это ваш язык программирования, или вы пришли в Python из другого языка, то вы уже знаете о том, что количество параметров в объявлении функции соответствует количеству аргументов, которые передают функции при вызове.



Это — основы. Это то, что помогает людям понимать окружающий мир. Но утверждение «количество параметров равно количеству аргументов» закладывает в голову новичка бомбу замедленного действия, которая срабатывает после того, как он увидит в объявлении функции таинственные конструкции *args или **kwargs.

Не позволяйте всяким значкам загонять себя в ступор. Тут нет ничего архисложного. В общем-то, если эти конструкции вам незнакомы — предлагаю с ними разобраться.
Читать дальше →

Повышение продуктивности при работе с Jupyter Notebook за 5 минут

Время на прочтение2 мин
Охват и читатели56K

Для начала повторим основные горячие клавиши. Если вы их ещё не используете — начните обязательно. В долгосрочной перспективе время на изучение окупится многократно.


0. Основные горячие клавиши


  • Esc: Переключение между режимом выполнения и редактирования
  • A: Добавление пустой ячейки сверху
  • B: Добавление пустой ячейки снизу
  • DD: Удаления ячейки
  • C: Копирование ячеек
  • X: Вырезание ячеек
  • V: Вставка ячеек

1. Перезапуск блокнота


Для рестарта просто нажмите ESC + 00.


Читать дальше →