🧙‍♂️ Магия Jupyter Notebook

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

Уставновка:

pip install jupyter

Запуск. В терминале пишем:

jupyter notebook

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

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

Рассмотрим некоторые из них:

%magic — выведет документацию по всем-всем доступным магическим функциям.

%lsmagic — просто список этих функций.

%timeit – измеряет среднее время выполнения кусочка кода, при этом вывод гораздо более информативен, чем обычный вызов timeit.timeit; и не требует лишних import.

Сравните вот это (из Jupyter):

def test():
  return sum(range(1000))
%timeit test()

12.5 µs ± 378 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

С этим (из интерпретатора):

>>> import timeit
>>> def test(): return sum(range(1000))
...
>>> timeit.timeit("test()", "from __main__ import test")
12.405041060002986

По-моему, первый вариант выигрывает по удобству и информативности.

%%timeit – многострочный вариант предыдущей функции. Пример:

%%timeit x = 10
x += 20
x /= 2
48.7 ns ± 0.435 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

%pinfo [имя] или [имя]? – покажет документацию по функции или классу [имя]. Примеры:

import numpy as np
%pinfo np.random.uniform

Или

import numpy as np
np.random.uniform?

Построение графиков:

%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)

%env — показать текущие переменные среды.

%env [имя]=[значение] — управление переменными среды. Пример:

%env OMP_NUM_THREADS=4

%cd – показывает или меняет рабочую директорию.

Можно вызывать системные команды прямо из блокнота через знак восклицания. Примеры:

!ls
!pip install click
# резульат выполнения системной команды можно получить в перемунную и использовать далее
output = !pip list | grep tensorflow

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

P.S. Многие магические функции также работают и в интерпретаторе IPython.

🧙 Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway 👈 

Лента Мебиуса

 

 

mebiusПамятник Ленте Мебиуса установлен недалеко от метро Фрунзенская. Эта извивающаяся инопланетная хрень действительно имеет только одну сторону. А как иначе? Она же объемная и гладкая: у нее нет разрывов и края. Тот факт, что она перекручена не делает ее лентой. У ленты есть край. А это штука, гомеоморфна тору. Хотя лента тоже вроде. Но лента имеет особенность в виде края, а тут ее нет. Лажа.

 

Octave Server

Начал работать над сервером для GNU Octave для лаборатории. Я поискал-поискал и нашел только PHP привязку, причем сам демон сервера тоже на PHP, что не есть хорошо… Поэтому моя идея – сделать сервер на Erlang.

Прототип уже работает. Можно проверить на

telnet dev.erudite-express.ru 20444

 

internal-rfc1918:OctaveServer tirinox$ telnet dev.erudite-express.ru 20444
Trying 195.122.249.19...
Connected to dev.erudite-express.ru.
Escape character is '^]'.
3+2
ans = 5
10-20
ans = -10