Jupyter Notebook新手入门手册

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

129a76fc451ce7f55413802500fcd429.jpeg

0

引言

JuPyteR是三大编程语言Julia、Python 和 R 的缩写,即可以在 Jupyter NoteBook (JNB) 里面编写这三种语言,除此之外,JNB 还支持轻量级别标记语言(Markdown)的功能。本帖结合 Python 语言来介绍 JNB 里面的玩法。

如下图所示,JNB 界面就是一组 cell,在每个 cell 里可以写代码(选 code 模式),也可以写标记语言(选 markdown 模式)。

6eab61d8ca94ca2cddb7fe4406889754.gif

Code 和 Markdown 模式之间可以用 Ctrl + Y 和 Ctrl + M 快捷键来替换。两者包括的内容总结如下图。

325c4e65c8be2b0e6d0b989c039891bd.png

我们分别从代码(code)和标记语言(Markdown)来介绍:

  • 代码

    • Python 代码

    • Shell 指令

    • Magic 指令

    • + 各种骚操作

  • 标记语言

    • 字体(font)

    • 链接(link)

    • 公式(formula)

    • 图片(image)

    • 视频(video)

    • 网页(HTML)

    • + 各种骚操作

首先展示一下在 Markdown Cell 里如何编辑目录,左图是 markdown 语言,右图的最终效果,从语言到最终效果需要按下 Enter 键。

62b4819f507b25c23156099ba53941b2.jpeg

从上图已经可以看出某些符号可产生哪些效果了,比如

    #      →     标题

    **     →     粗体

    1.2.3 →     要点

等等。别慌,后面都有介绍。

1

Markdown 类操作

1.1

要点

标记语言

ecb9fbda5c792a80b303028473174131.png

解释

第 1 行

  • ## 表示二级标题,

  • <font color = 'red'></font> 调字体为红色

  • <a name="1"></a> 创建超链接将此处标记为 "1",在目录点击可跳到此处。在目录中 [**要点**] 后面有个(#1)就是和 "1" 对应的。

第 2 行点击超链接(#toc)回到目录,目录被标记为 "toc"。

第 4 行同样创建超链接将此处标记为 "CV",在后面点击链接会跳到此处。

第 6-12 行用 - 符号来创建非数字型要点。

第 16-19 行用 1,2,3 来创建数字型要点。

最终效果

55fb6341c59b5c5b2b422f241d7e3385.png

1.2

公式

标记语言

57569dc11321d3c062c2685fe7261ac9.png

解释

语法和 Latex 里的一样,只需记得两点:

  1. 在文本中加入公式用 $...$

  2. 单独加入公式用 \begin{equation}...\end{equation}

最终效果

b212bca674815aaa9da0fb9060d0d75d.png

1.3

字体

字体大小

标记语言

2786e516752bcae9bd5e740556ff3bf3.png

解释

没啥好解释的,几个 # 就是几级标题。

最终效果

a1ec06c98032a5387fb63daa05cf060e.png

字体格式

标记语言

e75a6a8be810f8842a578e132b8beda7.png

解释

也没啥好解释的,上图讲的够清楚了,记住就行了。

最终效果

959d427deaa34efc90bb145f16a482c7.png

字体颜色

标记语言

95df77189e6dabcb0d3ec92dc8da90f7.png

解释

用 <font color = 'str'></font>,str 代表什么颜色的英文单词,调出来的字体就是什么颜色。

最终效果

d9742c268bf3cc679e77f67b79ae1a73.png

字体特征

标记语言

3f199382eed2556c738b09c01c4ee74c.png

解释

用 <font face = 'str1', size = n, color = 'str2'></font>,其中

  • face 控制字体类型

  • size 控制字体大小

  • color 控制字体颜色

最终效果

d44f335079f887728a0728d35b54edc3.png

1.4

引用

标记语言

9724cf17d17df6f694712cada8e0f58b.png

解释

无需解释,记住用 > 就行了,几个 > 就是几层引用。

最终效果

bf233b5e8b71659125a83747178e2449.png

1.5

表格

标记语言

| 内容          | 百分比   |
|---------------|:-------:|
| Python Basic  |   10%   |
| NumPy         |   15%   |
| Pandas        |   15%   |
| SciPy         |   10%   |
| Matplotlib    |   10%   |
| Seaborn       |    5%   |
| PyEcharts     |    5%   |
| Scikit-Learn  |   20%   |

最终效果

52f2eff8653b2136b93cb178ed86e498.png

1.6

图片

插入图片有两种方法:

  1. 在 Markdown Cell 里用 img 函数,我们以插入硬盘里图片举例

  2. 在 Code Cell 里用 Image 函数,我们以插入网上的图片举例

在 Markdown Cell 里用 img

标记语言

<img src="快乐机器学习封面.jpg" 
     style="width:1000px; height:500px;" 
     align="center">

解释

第 1 行在 src 参数设定图片的完整名称,确保图片存在路径中。

第 2 行在 style 参数设定图片的宽和高,注意用 px 作为单位。

第 3 行在 align  参数设定图片位置。

在 Code Cell 里用 Image()

标记语言

from IPython.display import Image
Image(url= "http://img51.ddimg.cn/99999990102599841.jpg", 
      width=500, height=1000)

解释

第 1 行引用 Ipython.display 里的 Image 库。

第 2 行在 url 参数设定图片的网址。

第 3 行在 width 和 height 参数设定图片的宽和高。

1.7

视频

标记语言

from IPython.display import YouTubeVideo
YouTubeVideo('9RrMcq-zJcU')

解释

第 1 行引用 Ipython.display 里的 YouTubeVideo 库。

第 2 行调用 YouTubeVideo,并传入视频的链接最后一部分无规律的字符串,如下图。

0344049c9caf22f3b9aefd07e4429be3.png

最终效果(我崇拜的达利奥)

7f00b0cffe8bacad8008ee2bbb5b012b.jpeg

1.8

HTML

标记语言

from IPython.display import HTML
HTML('''
<table style="border: 2px solid black;">
''' +
     ''.join(['<tr>' +
             ''.join([f'<td>{row},{col}</td>'
                      for col in range(5)]) +
              '</tr>' for row in range(5)]) +
     '''
</table>
''')

解释

没啥好解释的,记住就完了。不想记也可以,反正用的地方不多。

最终效果

fb0370f860415b80c0c0a27a7ba1aad3.png

1.9

链接

外链接

标记语言

- Python - https://www.python.org/
- Anaconda - https://anaconda.org/
- NumPy - https://numpy.org/
- Pandas - https://pandas.pydata.org/
- SciPy - https://www.scipy.org/
- Matploitlib - https://matplotlib.org/
- Seaborn - https://seaborn.pydata.org/
- PyEcharts - https://pyecharts.org/#/
- Scikit-Learn - https://scikit-learn.org/stable/

最终效果

47a802b47664696d9f6dbbcbdde0745b.png

内链接

标记语言

[返回个人介绍](#CV)

最终效

df8538989c303ff42944abb974ef63ca.gif

个人介绍处用<a name="CV"></a>创建超链接。[返回个人介绍] 后用(#CV) 形成链接。

2

Code 类操作

2.1

Python 代码

以检查系统和 Python 常用包的版本为例。

# system
import sys
print('System: %s' %sys.version)
# numpy
import numpy
print('numpy: %s' % numpy.__version__)
# pandas
import pandas
print('pandas: %s' % pandas.__version__)
# scipy
import scipy
print('scipy: %s' % scipy.__version__)
# matplotlib
import matplotlib
print('matplotlib: %s' % matplotlib.__version__)
# seaborn
import seaborn
print('seaborn: %s' % seaborn.__version__)
# pyecharts
import pyecharts
print('pyecharts: %s' % pyecharts.__version__)
# scikit-learn
import sklearn
print('sklearn: %s' % sklearn.__version__)
System: 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)]
numpy: 1.17.4
pandas: 0.25.3
scipy: 1.3.1
matplotlib: 3.1.1
seaborn: 0.9.0
pyecharts: 1.3.1
sklearn: 0.22

2.2

Shell 指令

用感叹号 ! 作为前缀,我们用 !cd 和 !dir 来查看路径和其所有文件名。

!cd
C:\Users\oawsy\Desktop\Steven - Business\Python Course\code
!dir

cf96ef77cb46f6768e60207fa2ffb943.png

2.3

Magic 指令

用感叹号 % 或 %% 作为前缀,我们可以使用 line magic 和 cell magic。首先用 %lsmagic 来查看所有魔法指令。

%lsmagic

b340169df93d241f55e0d1e9e6616f35.png

line magic (%)

%timeit L = [n ** 2 for n in range(1000)]
520 µs ± 37.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

cell magic (%%)

%%timeit
L = []
for n in range(1000):
    L.append(n ** 2)
571 µs ± 45.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

2.4

查询指令

查询指令可用 ? 和 ?? 前缀,区别是用 ? 可查询某个函数或变量的信息,而用 ?? 还可查询到函数的源代码。

查询内置函数

print?

afbe72d85fa27b1ca52370041b419076.png

用 print?? 得到同样结果。由于内置函数的源代码太长,通常不会显示出来。

查询变量

首先定义一个列表

L = [1, 2, 3]

我们可以查询变量的信息。

L?

e0b5d171aef8f2e4e911b3afb4085ee1.png

我们还可以查询变量中方法的信息。

L.insert??

53bca7513bac30c0596b485c02f5e7fa.png

查询自定义函数

定义一个函数 shout() 并带上 docstring '''将 s 喊出来'''

def shout( s='武汉加油' ):
    '''将 s 喊出来'''
    print(s)

运行得到

shout()
武汉加油

单问号 ? 查询不到自定义函数的源代码。

shout?

142d32891f61a6988d5301165d3667e7.png

双问号 ?? 可查询到自定义函数的源代码。

shout??

e8d6e384a7e29a3cfd7bbdd6a1ccf47f.png

2.5

自动完成键

TAB 键

首先定义一个列表

L = [1, 2, 3]

接着我们使用 <TAB> 键来查看列表中的方法。

48328411ceb15fc54d8a4baf2f52ff61.gif

  • 如果只写个 L. + <TAB>,那么我们可以查看列表中所有方法。

  • 如果我们想用 count,但是不知道整个单词怎么拼,可以写 L.c + <TAB>,这时可看到所有以 c 开头的方法,有 clear, copy 和 count。

  • 如果记得前两个字母,L.co + <TAB>,这时可看到所有以 c 开头的方法,有 copy 和 count。

  • 如果记得前三个字母,L.cou + <TAB>,这时只有一个 count 方法,cou 会自动完成 count,无需我们手动敲完。

d9e279055ca81b111be7915f374fa001.gif

* 通配符

当你只记得某个对象或者其方法的首几位字母,<TAB> 键会很有用。但是如果你只记得中间几位或者后面几位的字母,我们可以用通配符 *。

比如我们想知道 Python 里面所有错误的类型,我们知道它们都是以 Error 结尾,因此写成 *Error,其中 * 代表 0 或 n 个字符。

*Error?
ArithmeticError
AssertionError
AttributeError
...
ValueError
WindowsError
ZeroDivisionError

再比如你想查询 str 中以 r 开头的所有方法,用 r*。

str.r*?
str.replace
str.rfind
str.rindex
str.rjust
str.rpartition
str.rsplit
str.rstrip

再比如你想查询 str 中含 rs 的所有方法,用 *rs*。

str.*rs*?
str.rsplit
str.rstrip

2.6

快捷键

JNB 里面的快捷键太多了,我们列出一些常用的好用的。快捷键分为命令模式(command mode)和编辑模式(edit mode),细分如下:

命令模式

  • Ctrl + Enter:运行选的 Cell,运行完选择当前 Cell

  • Shift + Enter:运行选的 Cell,运行完选择下个 Cell

  • Alt + Enter:运行选的 Cell,运行在下面插入新的 Cell

  • Esc + Y: 将 cell 转成 Code 模式

  • Esc + M: 将 cell 转成 Markdown 模式

  • Esc + Shift + K(up): 选上面的 cell

  • Esc + Shift + J(down): 选下面的 cell

  • Esc + A: 在上面插入新的 cell

  • Esc + B: 在下面插入新的 cell

  • Esc + F:查找并替代

编辑模式

  • Ctrl + ]:缩进

  • Ctrl + [:取消缩进

  • Ctrl + /:注释/取消注释

  • Shift + TAB:提示框

在上面众多快捷键中,我认为 Shift + TAB 最有用,特别是和 <TAB> 键或者通配符 * 一起用的时候。

假如我们想用 seaborn (sns) 下面的配对图 (pairplot)

  • 首先函数名字都记不清楚,只知道有个 p 字,这时用 sns.p + <TAB> 就可看到所有 p 开头的方法选出 pairplot

  • 接着 pairplot 函数里面要放什么参数也不知道,这时将鼠标放在 pairplot() 的括号中间,按 Shift + TAB 会出来一个提示框,函数里面的参数定义和用法介绍的清清楚楚。

一动图胜千言,如下。

e723c023f067f538e8acba84dbb3f04a.gif

这样你都不需要查看任何外来资料,就凭着自己模糊的记忆一点一点把函数用对(根据个人经验是这样的)。

2.7

黑操作

In 和 Out 对象

注意:需要重启 Notebook 运行得到以下结果。

首先在三个 Cell 运行代码,注意下图左边的 In 和 Out 标注。并不是每个 In 都对应 Out,有些语句没有输出。

b1d1ac7f46ff135e3c65542e9766ddf2.png

打印 In 发现是个列表,有 5 个元素。第 1 个是个空字符串,最后 1 个是 print(In) 本身,中间三个才是有用的。

print(In)
['', 'import math', 'math.exp(1)', 'math.sin(1)', 'print(In)']

打印 Out 发现是个字典,其键(key)就是第 n 个 In 对应的 n,其值(value)就是 Out[n] 对应的值。

print(Out)
{2: 2.718281828459045, 3: 0.8414709848078965}

我们可以对 In 和 Out 进行索引。

print( In[2], Out[2] )
math.exp(1) 2.718281828459045
Out[2] + Out[3]
3.5597528132669414

下划线 _ 保存最新产出

下划线 _ 能保存最新产出不知道吧?

双下划线 __ 能保存第二新产出不知道吧?

三下划线 ___ 能保存第三新产出不知道吧?

看下面代码。

print(_)
3.5597528132669414
print(__)
0.8414709848078965
print(___)
2.718281828459045

由于 print() 函数不产生输出,即在 Cell 前面没有 Out 字眼。这时再打印 Out,发现只有在第 2, 3 和 7 In 才对应的产出。

Out
{2: 2.718281828459045,
 3: 0.8414709848078965,
 7: 3.5597528132669414}

我们还可以用下划线 _ 来代表 Out,用 _n 来代表 Out[n],代码如下:

_2
2.718281828459045
_7
3.5597528132669414

没问题,如果打印 _4 呢?

_4

76a888e8961f51a93a7c488155dd5398.png

报错了,因为 Out 里面没有一个键是 4,即上面第 4 个 In 没有产生 Out。验证一下,确实是这样的。

f60a80140f2f58ebed2aef89d73a67d8.png

3

总结

在 Jupyter Notebook 里面我们可以编写 Code,也可以编写 Markdown。

在 Markdown Cell 中可以添加数学公式、表格、要点、链接、图片、视频等,使得整个 Notebook 内容丰富多彩。

在 Code Cell 中可用 Python 编程,还可以执行 Shell 命令和 Magic 命令,还可以玩一下用下划线 _ 和 In/Out 的骚操作。

如果你在编程时啥都记不住,又不想查外部资料,建议你要记住几个操作:

重要假设:你还是能稍微记住一些东西的,比如大概知道 numpy 里面有重塑函数叫 res_p__ 什么的。啥都记不住我建议你不要编程了。

  1. 用 <TAB> 或者 * 来慢慢查出函数的完整名称。

  2. 用 ?或 ?? 来查看这个函数的 docstring。

  3. 用 Shift + TAB 调出提示框,查询函数里每个参数是如何调用的。

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇

 
 

cfb0ab3306e7a0d0bbe9e7be37d5a6fa.jpeg

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。


下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。


下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值