<jupyter_start><jupyter_text>Jupyter Notebook -- это удобно! Код организван отдельными болками. Блоки кода можно выполнять в произвольном порядке. Сочетает в себе достоинства полноценных скриптов и интерактивной оболочки. Порядок выполнения блоков указан слева от ячейки.<jupyter_code>print(math.sqrt(4))
import math<jupyter_output><empty_output><jupyter_text>К коду можно добавлять пояснения в ячейках с режимом markdown. Поддерживается различное форматирование: **bold**, *italic*, $\LaTeX$ заголовки различного уровня* списки    * в     * том        * числе            * и                * вложенные                HTMLкартиночкиИ многое дугое...  Для некоторых объектов доступно особое отображение.<jupyter_code>import numpy as np
np.array([[1,2,3],[4,5,6],[7,8,9]])<jupyter_output><empty_output><jupyter_text>Горячие клавишиИспользование горячих клавиш позволяет очень мильно облегчить и ускорить работу с любой программой, особенно связанной со вводом текста. В плане горячих клавиш очень продвинутым является текстовый редактор vim. В нем существует отдельный режим, мозволяющий пользоваться горячими клавишами. В Jupyter notebook поддерживается та же концепция. Существуют 2 режима работы: режим ввода и командный режим. Режим ввода отображается зеленой рамкой вокруг активной ячейки, командный режим -- синей. Для того, чтобы переключиться из режима ввода в командный режим необходимо нажать `Esc`, переход в режим редактирования осуществляется по нажатию клавиши `Enter`.**В командном режиме часто используются следующие горячие клавиши:*** `b` -- вставить пустую ячейку после текущей* `a` -- вставить пустую ячейку перед текучей-----* `c` -- копировать текущую ячейку* `x` -- вырезать ячейку* `v` -- вставить ячейку из буфера после текущей-----* `dd` -- удалить текущую ячейку* `z` -- отменить предыдущее действие (в юпитере не последней версии можно отменить ТОЛЬКО ОДНО действие) -----* `m` -- перевести ячейку в режим Markdown* `y` -- перевести ячейку в режим кода* `l` -- отображать номера строк* `o` -- скрыть/показать вывод текущей ячейки-----* `ii` -- остановить выполнение текущей ячейки* `00` -- перезагрузить ядро* `s` -- сохранить notebook-----* `h` -- Показать справку по горячим клавишам**Некоторые сочетания используются в режиме редактирования:*** `Tab` (в  начале строки либо для выделенных строк) -- добавить отступ* `Shift+Tab` (в  начале строки либо для выделенных строк) -- убрать отступ-----* `Tab` -- автодополнение вводимой команды* `Shift+Tab` -- показать docstring введеннной команды-----* `Clrl+/` -- закомментировать выделеные строки-----* `Shift+Enter` -- выполнить текущую ячейку кода и перейти к следующей* `Ctrl+Enter` -- выполнить текущую ячейку кода и остаться на ней* `Alt+Enter` -- выполнить текущую ячейку кода и создать новую Также Jupytr Notebook имеет большое количество встроенных "магических" функций. С некоторыми познакомимся в этом курсе, про другие стоит рассказать сразу. Выполнение bat/bash комманд:<jupyter_code>!dir<jupyter_output>Том в устройстве C не имеет метки.
 Серийный номер тома: EE02-B71B

 Содержимое папки C:\Users\Teacher\Desktop\PythonNP\materials\week1

20.03.2018  13:42    <DIR>          .
20.03.2018  13:42    <DIR>          ..
20.03.2018  13:42    <DIR>          .ipynb_checkpoints
20.03.2018  11:05           789 151 IPython intro.ipynb
02.03.2018  17:28            67 497 lena.jpg
20.03.2018  12:53            12 164 е1.ipynb
               3 файлов        868 812 байт
               3 папок  135 433 506 816 байт свободно<jupyter_text>Замер времени выполнения кода Измерение времени выполнения ячейки кода:<jupyter_code>%%time
a = 352e+11
for i in range(10000):
    a = math.sin(a)<jupyter_output>Wall time: 0 ns<jupyter_text>Время выполнения конкретной строки из блока<jupyter_code>%time a = 352e+10
for i in range(1000):
    a = math.sin(a)<jupyter_output>Wall time: 0 ns<jupyter_text>Замер времени выполнения в цикле<jupyter_code>%timeit a = 352e+10
for i in range(1000):
    a = math.sin(a)<jupyter_output>18.5 ns ± 0.252 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)<jupyter_text>Построение графиков и вывод изображений<jupyter_code>import matplotlib.pyplot as plt
%matplotlib inline
a = np.linspace(-50, 50, 10000)
b = np.sin(a)/a

plt.figure(figsize=(10,8))
plt.plot(a, b, label=r"$\frac{sin(x)}{x}$")
plt.legend()
plt.title(r'$f(x) = \frac{sin(x)}{x}$')
plt.xlabel('x')
plt.ylabel('f(x)');
from sklearn.datasets import make_classification
X, y = make_classification(n_features=2, n_redundant=0)
plt.figure(figsize=(10,8))
plt.scatter(X[:,0], X[:,1], c=y, marker='+')
plt.title("Classification problem");
lenna = plt.imread("lena.jpg")
plt.figure(figsize=(10,10))
plt.imshow(lenna)
plt.title("image")
plt.figure(figsize=(10,10))
plt.title("histograms")
plt.subplot(2,2,1)
plt.hist((lenna[:,:,0]*0.3+lenna[:,:,2]*0.59+lenna[:,:,2]*0.11).reshape(-1), 
         bins = 256, color="black")
plt.subplot(2,2,2)
plt.hist(lenna[:,:,0].reshape(-1), color="red", bins = 256)
plt.subplot(2,2,3)
plt.hist(lenna[:,:,1].reshape(-1), color="green", bins = 256)
plt.subplot(2,2,4)
plt.hist(lenna[:,:,2].reshape(-1), color="blue", bins = 256);<jupyter_output><empty_output><jupyter_text>Интерактивные графики<jupyter_code>from ipywidgets import interactive, widgets
def func(a,b,delta):
    plt.figure(figsize=(8,8))
    plt.title('Lissajous curves')
    t = np.linspace(0,100,10000)
    x = np.sin(a*t+delta)
    y = np.sin(b*t)
    plt.plot(x,y)
    plt.show()

interactive(func,a=(0., 3., .01), b=(0., 3., .01), delta=(0., np.pi, .01))<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.13262551736548497, 'fraction_numerical': 0.04768760122368184, 'mean_word_length': 4.427734375, 'pattern_counts': {'":': 0, '<': 32, '<?xml version=': 0, '>': 32, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '8', 'dir': 'jupyter-structured-clean-dedup', 'id': '422582', 'license': 'MIT', 'n_tokens_mistral': 2486, 'n_tokens_neox': 2592, 'n_words': 540, 'path': 'materials/week 1/IPython_intro.ipynb', 'repo_name': 'Erhil/PythonNpCourse', 'size': '5557'}