1. jupyter notebook的基本操作
1.1 jupyter notebook的基本打开操作
1.1.1 更改jupyter notebook的默认打开路径
由于我是使用anaconda中的jupyter notebook,并且我的anaconda中有多个虚拟环境,因此只在这里记录我使用有效的方法。
首先,找到相对应虚拟环境下的jupyter notebook,如图所示:
然后右键,选择属性,将目标一栏中的 %USERPROFILE% 替换成你想要打开的路径,如图所示:
更改完成后打开相应环境下的jupyter notebook,就会是刚才设置的工作路径。
注意:我也试过网上的另一种更改默认打开路径的方法,就是打开cmd,输入jupyter notebook --generate-config命令,然后在jupyter_notebook_config.py文件中更改#c.NotebookApp.notebook_dir = ''这一路径,但是未成功,可能是因为我有多个环境,需要进入指定环境下的jupyter notebook才可以更改成功。
1.1.2 打开非默认路径下的文件
首先,打开虚拟环境tf2.3对应的anaconda prompt,若想打开非默认路径下的文件,例如“D:\”,那么需要先进入对应的目录,然后再打开jupyter notebook即可进入非默认路径下的文件,如图所示:
2. jupyter notebook界面介绍
2.1 创建notebook
在进入jupyter notebook默认的路径下后,将看到以下界面。如果想新建一个notebook,点击右上角new新建,会显示本电脑中的所有环境,选择所需要的的虚拟环境创建相应的notebook即可,以tf2.3为例:
2.2 菜单栏介绍
点击菜单栏中的conda一栏,可以看到本电脑中存在所有虚拟环境,以及各个虚拟环境中安装的包,在这里可以对这些包进行下载、删除、更新等操作。也可以对存在的虚拟环境进行复制、删除等操作,也可以导出环境的txt文档。如图所示:
2.3 notebook页面介绍
在创建新的notebook后可以看到以下界面,这个notebook的编辑页面由notebook的名称(双击重命名)、菜单栏(由file、edit、view、insert、cell、kernel、help,所有功能都可以在菜单栏中找到)、工具栏(将常用的功能挑选了出来,方便操作)和cell(在cell中编写代码)组成。
2.3.1 菜单栏
2.3.1.1 File栏
new notebook: 新建一个notebook
open: 在新的页面中打开主面板
make a copy: 复制当前的notebook并且生成一个新的notebook
save as: 另存为,在弹出的界面中输入保存地址,地址不能在root环境之外
rename: 重命名
save and checkpoint: 保存并且生成检查点
revert to checkpoint: 将此刻的notebook返回到上次生成的检查点,若此刻不保存生成检查点,此刻的文件会消失
print preview: 打印预览
download as: 转为其它格式下载,如.txt、.py等
close and halt: 停止运行并且退出该notebook
2.3.1.2 Edit栏
cut cells: 剪切cell
copy cells: 复制cell
paste cells above:粘贴在选中的cell以上
paste cells below: 粘贴在选中的cell以下
paste cells & replace: 粘贴并替换选中的cell
delete cells: 删除cell
undo delete cells: 撤销删除cell
split cell: 拆分cell
merge cell above: 将选中cell与上方cell合并
merge cell below: 将选中cell与下方cell合并
move cell up: 上移选中cell
move cell down: 下移选中cell
edit notebook metadata: 编辑界面元数据,来修改网页界面的一些设置
find and replace: 查找并且替换,只是在选中的cell中查找和替换,类似于word中的替换
cut cell attachments: 切割cell附件
copy cell attachments: 复制cell附件
paste cell attachments: 粘贴cell附件
insert image: 插入图片
2.3.1.3 View栏
toggle header: 隐藏/显示标题栏
toggle toolbar: 隐藏/显示工具栏
toggle line number: 隐藏/显示代码每行前的编号
cell toggle: cell 工具栏
edit metadata: 编辑每个cell的元数据
raw cell format: 原始cell模式,什么都没有
slideshow: 幻灯片
attachments: 编辑cell的附件
tags: 管理cell的标签
2.3.1.4 Insert栏
insert cell above: 在选中cell上方插入新cell
insert cell below: 在选中cell下方插入新cell
2.3.1.5 Cell栏
run cell: 运行选中的cell
run cells and select below: 运行选中cell,运行完成后选择下方的cell
run cells and insert below: 运行选中cell,运行完成后在下方插入新的cell
run all: 运行所有cell
run all above: 运行选中cell上边的所有cell
run all below:运行选中cell下边的所有cell
cell type: cell的类型,分别为code、Markdown、Raw NBConvert三种类型
current outputs: 当前选中的cell的输出的可操作方式(toggle: 隐藏/显示相互切换、toggle scrolling: 对于输出内容较长的cell,在用下拉条展示/不用下拉条展示之间相互切换、clear: 清楚本cell的输出)
all output: 全部cell的输出的可操作方式(同上)
2.3.1.6 Kernel栏
在kernel那一栏中可以看到change kernel选项中有不同的kernel,如图所示,分别对应着我电脑本身的环境,因此可以通过这里来改变不同的kernel来运行程序。
interrupt: 中断与服务器的连接
restart: 重启,重启服务器后可能会丢失变量
restart&clear output: 重启并且清除所有cell的输出
restart&run all: 重启并且运行所有cell
reconnect: 重新连接
shutdown: 关闭,关闭后需要重新连接,关闭后可能会丢失变量
change kernel: 不同虚拟环境对于不同环境下的kernel
conda packages: 和jupyter notebook页面的conda一栏中内容一样
visit anaconda.org: 共享packages, notebooks, projects 和 environments
2.3.1.7 Help栏
user interface tour: 了解界面
keyboard shortcuts: 查看所有快捷键
edit keyboard shortcuts: 编辑键盘快捷键
notebook help: notebook 帮助文档
markdown: markdown 帮助文档
python reference: python 帮助文档
ipython reference: ipython 帮助文档
numpy reference: numpy 帮助文档
scipy reference: scipy 帮助文档
matplotlib reference: matplotlib 帮助文档
sympy reference: sympy 帮助文档
pandas reference: pands 帮助文档
about: 关于notebook的版本信息
2.3.2 工具栏
工具栏的功能在菜单栏中都能找到,这里只是将常用的功能展示成图标,方便操作。
2.3.3 基本单元cell
cell的两种模式:
cell最左边颜色为蓝色时,为命令模式(此时可对cell进行操作,如:复制、粘贴、剪切、移动等)
cell最左边颜色为绿色时,为编辑模式(此时可对cell中的代码以及文字进行编辑。)
ESC键进入命令模式。
Enter键进行编辑模式。
3. notebook快捷键和命令介绍
3.1 notebook中的快捷键
notebook自带一组快捷键,这将大大提高平时写代码的效率,可在cell为编辑模式时按‘H’键来查看,如图所示:
快捷键归纳(中文看着方便):
1.cell为命令模式
查询cell的快捷键:H(这里的‘H’不是要在大写情况下才能使用快捷键,‘H’仅代表键盘上H键,下同。)
在当前cell上方添加一个cell:A
在当前cell下方添加一个cell:B
剪切当前cell:X
复制当前cell:C
粘贴当前cell:V
删除当前cell:DD
将当前cell从code类型或者RAW NBConvert类型转为markdown类型:M
将当前cell从markdown类型或者RAW NBConvert类型转为code类型:Y
将当前的cell转化为具有一级标题的markdown:1
将当前的cell转化为具有二级标题的markdown:2
将当前的cell转化为具有三级标题的markdown:3
将当前的cell转化为具有四级标题的markdown:4
将当前的cell转化为具有五级标题的markdown:5
将当前的cell转化为具有六级标题的markdown:6
为当前的cell加入line number:L(取消line number:LL)
撤销对某个cell的删除:Z
选择当前cell的上边一个cell:K或者Up键
选择当前cell的下边一个cell:J或者Down键
执行当前cell,并自动跳到下一个cell:Shift-Enter
执行当前cell,执行后不自动调转到下一个cell:Ctrl-Enter
运行本cell,在当前cell下插入新cell,并且默认为编辑模式:Alt-Enter
是当前的cell进入编辑模式: Enter
退出当前cell的编辑模式: Esc
快速跳转到最后一个cell: Ctrl End
快速跳转到首个cell: Ctrl Home
2.cell为编辑模式
代码补全:Tab
向右缩进:Tab或者Ctrl-]
取消缩进:shift-Tab或者Ctrl-[
全选:Ctrl-A
撤销:Ctrl-Z
为一行或者多行添加/取消注释:Ctrl /
3.2 notebook中的magic 命令
magic命令是ipython的一些高级命令。magic命令有分行magic命令(前加%)和单元格magic命令(前加%%),行magic命令仅用于编写magic命令所在的行,单元格magic命令应用于整个cell。
所有的magic命令均可以在这里查看:
https://ipython.readthedocs.io/en/stable/interactive/magics.html#magic
可以通过在命令后加?的方式得到该命令的docstring,即该命令的帮助文档。
3.2.1 常用magic命令
3.2.1.1 magic命令帮助
%lsmagic:显示出所有magic命令
对当前行使用的magic命令共93个(以%开头)
对当前cell使用的magic命令共28个(以%%开头)
%quickref:显示出所有magic命令的简单版帮助文档
%magic_name?:输出某个magic命令的详细帮助文档
例如:%run?
3.2.1.2 line magic命令(慢慢补充)
%alias:设置指令的别名
%alias_magic:为现有的magic命令创建别名。
%autoawait:
%autocall:调用函数的时候可以不用输入括号。
0:关闭、1:智能、2:完整
%automagic:使用magic名命令时,可以不用输入%。
%bookmark:管理IPython的书签系统。
%cd:更改当前工作目录。
%colors:设置消息提示框的颜色。
%conda:在当前kernel中安装管理包。
%config:查看、更改IPYthon的配置系统。
%debug:激活交互式调试器。
%dhist:显示历史访问记录。
%dirs:返回当前目录堆栈。
%doctest_mode:开启和关闭doctest模式。
%edit:调用编辑器,并且执行代码结果。
%env:设置环境变量。
%gui:启用或禁用GUI
%history:显示出历史调用的指令。
-n:
-o:
-p:
-t:
-f:
-g <PATTERN>:
-L <LIMIT>:
-u:
%killbgscripts:通过%%script和它的相关命令去掉BG流程
%load:加载文件、URL、历史记录、macro、element in the user namespace到cell当中。
-r<lines>: 指定加载源码的行的范围,如x:y(x行到y行)
-s<symbols>: 指定从源码中要加载的函数或类
-y: 加载的字符不可超过20万个
-n: 在加载源码时,要包括命名空间
%load_ext:通过模块名加载IPYthon_extension(create a normal python module that can be imported).
%loadpy:%load命令的别名,在加载文件时可不用加.py后缀。
%logoff:暂停记录。
%logon:重新开始记录。
%logstart:开始记录。
%logstate:打开记录系统的状态
。
%logstop:完全停止记录,并且关闭。
%macro:定义一个宏指令,以供调用。
%matplotlib:通过这条命令显示画出的图,类似于plt.show(),若不通过命令调用,则不会显示图形。
%notebook:导出和转换.ipynb文件
%page:
%pastebin:
%pdb:控制pdb交互式调试器的自动调用。
%pdef:打印任何可调用对象的内容信息,如果对象是类,则打印内部信息。
%pdoc:打印对象的docstring。
%pfile:打印定义对象的文件。
%pinfo:打印对象的相关信息。
%pinfo2:打印有关对象的额外详细信息。
%pip:在cell中使用pip指令
%popd:更改目录从堆栈顶部弹出。
%pprint:在显示/不显示之间切换。
%precision:设置浮点精度,并且显示。
%prun:通过python解释器运行此命令咋所在行的代码。
%psearch:
%psource:打印对象的源代码。
%pushd:将当前目录放在堆栈上并更改目录。
%pwd:显示出当前路径
%pycat:预览文件
%pylab:加载numpy和matplotlib进行交互工作。
%recall:重新调用命令,或者输入命令进行行编辑
%rehashx:
%reload_ext:重新加载模块
%rerun:重新运行文件
%reset:清空变量
%reset_selective:通过删除用户定义的名称来重置名称空间。
%run:调用脚本文件
首先创建一个脚本文件命名为hello.py,文件中代码为:
def hello():
print('hello world!')
hello()
将脚本文件和想要调用脚本文件的.ipynb文件放在同一文件夹下,就可用%run命令调用hello.py文件,运行结果如下图所示:
%save:保存一段代码或者宏指令到指定的文件中。
%sc:
%sx:
%tb:
%time:测算命令所在行的运行时间
%timeit:执行指定行的代码多次,输出最佳结果。
参数:
-n <N>: 在一个循环中执行给定语句N次。如果未提供N,则会根据语句执行的时间来确定执行的次数。
-r <R>: 重复次数R,每个重复次数由N个循环组成,并获得最佳结果。默认值:7
-t: 使用time.time测量时间,是Unix的默认值,测量实际时间。
-c: 使用time.clock来测量时间,这是Windows上的默认设置,用于测量实际时间。在Unix上,使用resource.getrusage代替并返回CPU用户时间。
-p <P>:使用P位的精度显示计时结果。默认值:3
-q: 不打印结果
-o: 返回一个TimeitResult,可以将其存储在变量中以进行检查。
%unalias:删除别名。
%unload_ext:通过模块名卸载包。
%who/%who_ls/%whos:显示全部变量(整个notebook中的变量).,并且以指定的形式显示变量。
%xdel:删除一个变量,将它从IPYthon用到它的每一个地方清除。
%xmode:控制异常,可通过参数选择模式。
3.2.1.3 cell magic命令
%%bash:
%%capture:
%%html:编写HTML代码
%%javascript:编写JavaScript代码
%%latex:编写LateX公式
%%markdown:编写markdown代码
%%perl:
%%pypy:
%%python2:编写python2代码
%%python3:编写python3代码
%%ruby:
%%script:
%%sh:
%%svg:画矢量图
%%writefile:新建一个文件,将当前cell中的代码写入这个文件
记录一下踩过的坑:
1. 关于checkpoint
在notebook里边file一栏中有关于checkpoint的选项,如图所示:
验证一下这个checkpoint是什么。首先写两行代码,运行后点击save to checkpoint,如图所示,可以看到上边会显示检查点已创建(其实相当于保存,对某一时刻的文件进行存档):
然后接着再多写两行代码(后边方便对比),随便写就行
在点击revert to checkpoint选项之后,会有刚才保存的checkpoint的时间节点,如图所示:
点击那个时间节点后,就会返回到以下界面,如图所示:
会发现和之前保存的时候一模一样,现在应该可以理解checkpoint的含义了。但是checkpoint必须要手动保存和创建之后,才能够被revert。如果不保存和创建checkpoint直接revert to checkpoint的话,revert这一操作是不可以被撤销的!千万记住需要手动创建checkpoint,系统并不会不会自动创建,因为会难以管理,具体原因可以看下图。
2. 关于logout
如果你也和我一样不小心点了这里的logout,
就会看到这个界面,怎么办,瞎点点说不定就好了!
点击login page之后会出现下图这个界面,提示需要密码
根据页面的提示,打开anaconda prompt(tf2.3),注意一定要进入相对应的虚拟环境,然后输入命令
jupyter notebook list
能查到一个网址,如图所示,
**第一种方法:**直接将上图中的网址复制到浏览器打开,就是之前写代码的页面了。
**第二种方法:**是复制网址中的token后的一串编码,如下图所示,输入到之前需要密码那个界面的password or token一栏中,就可以直接返回到,你点logout之前的页面了。
可以发现,在点击logout之后,服务器并没有关闭这个程序,只不过是在前端断开了连接,还可以重新与后端程序建立连接,因此可以通过网址再次打开这个页面。
记录一些conda的命令:
(持续更新)
###环境管理
activate env_name #进入环境
deactive #退出环境
conda env list #查看有哪些环境
conda create -n env_name python=3.7 #创建python版本为3.7,名字为env_name的环境
conda remove -n env_name #删除环境
conda create --name new_env_name --clone old_env_name #将旧环境克隆为新环境
conda remove -n old_env_name --all #彻底旧删除环境
###包管理
conda list #查看环境下的所有包
conda list -n env_name #查看指定环境下的包
conda update package_name #更新包
conda install package_name #下载包l
conda uninstall package_name #删除个包
###清理无用包
conda clean -p #删除没有用的包
conda clean -t #删除tar包
conda clean -y --all #删除所有的包及cache