1.  执行shell命令

Shell是一种与计算机进行文本交互的方式。

一般来讲,当你正在使用Python编译器,需要用到命令行工具的时候,要在shell和IDLE之间进行切换。

但是,如果你用的是Jupyter,就完全不用这么麻烦了,你可以直接在命令之前放一个“!”,就能执行shell命令,完全不用切换来切换去,就能在IPython里执行任何命令行。

1In [1]: !ls
2example.jpeg list tmp
3In [2]: !pwd
4/home/Parul/Desktop/Hello World Folder'
5In [3]: !echo "Hello World"
6Hello World
7

我们甚至可以将值传递给shell,像下面这样:

1In [4]: files= !ls
2In [5]: print(files)
3['example.jpeg', 'list', 'tmp']
4In [6]: directory = !pwd
5In [7]: print(directory)
6['/Users/Parul/Desktop/Hello World Folder']
7In [8]: type(directory)
8IPython.utils.text.SList

注意,返回结果的数据类型不是列表。

2.  给Jupyter换主题

使用Jupyter主题,不仅能让你的Jupyter界面更好看、更舒服,还能让屏幕上的代码看起来更显眼。

比如Chesterish主题:

solarizedl主题:

来看一下具体的操作方法:

第一步,安装:

pip install jupyterthemes

第二步,加载可用主题列表:

jt -l
 

第三步,选择你想要的主题:

# selecting a particular theme
jt -t <name of the theme>
# reverting to original Theme
jt -r

现在可用的主题有:

chesterish
grade3
gruvboxd
gruvboxl monokai
oceans16
onedork
solarizedd
solarizedl

把名字填进去就好啦。

不过,每次换主题的时候都要重新加载Jupyter,才能看到主题变化。

另外我们上面讲的在命令之前加“!”也一样可用。

3.  笔记本扩展

笔记本扩展(nbextensions)是一种JavaScript模块,可以加载到笔记本前端页面上,可以大大提升用户体验。

比如下面这些扩展工具,简直能让效率提升10000倍。

Hinterland

Hinterland功能可以让你每敲完一个键,就出现下拉菜单,可以直接选中你需要的词汇。

Snippets

Snippets在工具栏里加了一个下拉菜单,可以非常方便的直接插入代码段,完全不用手动敲。

拆分单元格

拆分笔记本中的单元格,改成相邻的模式,看起来就像分了两栏。

目录

这个功能可以自动找到所有的标题,生成目录。

并且这个目录还是移动的呦,你可以放在侧边栏,也可以拖动到任何你喜欢的地方悬浮起来。

折叠一个标题下的全部内容

如果你的代码太长,觉得滚动过去太麻烦,可以直接折叠掉。

Autopep8

一键美化代码,强迫症的福音。

安装方法

最后看一下怎么装,需要用到conda:

conda install -c conda-forge jupyter_nbextensions_configurator

或者用pip:

pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install
#incase you get permission errors on MacOS,
pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install --user

然后把Jupyter打开,你就可以看到NBextensions这个选项卡了。

找不到的话就去菜单的Edit里面找。

搞定。

4.  Jupyter小工具

还有一些Jupyter小工具,比如滑块、文本框之类的部分,可以做一些方便的交互。

滑块

def f(x):
return x
# Generate a slider
interact(f, x=10,);
 

布尔值生成复选框

# Booleans generate check-boxes
interact(f, x=True);

字符串生成文本区域

# Strings generate text areas
interact(f, x='Hi there!');

播放器

 play = widgets.Play(
# interval=10,
value=50,
min=0,
max=100,
step=1,
description="Press play",
disabled=False
)
slider = widgets.IntSlider()
widgets.jslink((play, 'value'), (slider, 'value'))
widgets.HBox([play, slider])

  

日历

widgets.DatePicker(
description='Pick a Date',
disabled=False
)

不过这个部件只能咋Chrome和Edge里用,Firefox和Safari不支持。

调色盘

widgets.ColorPicker(
concise=False,
description='Pick a color',
value='blue',
disabled=False
)

标签

tab_contents = ['P0', 'P1', 'P2', 'P3', 'P4']
children = [widgets.Text(description=name) for name in tab_contents]
tab = widgets.Tab()
tab.children = children
for i in range(len(children)):
tab.set_title(i, str(i))
tab

 

其他的小部件,可以在文末的传送门跳转到GitHub寻找。

安装方法

# pip
pip install ipywidgets
jupyter nbextension enable --py widgetsnbextension
# Conda
conda install -c conda-forge ipywidgets
#Installing ipywidgets with conda automatically enables the extension

使用“interact”功能自动创建UI控件,这是使用IPython最方便的方法。

# Start with some imports!
from ipywidgets import interact
import ipywidgets as widgets

5.  Qgrid

Qgrid也是一个Jupyter的小部件,不过它主要用于数据帧,装上之后,就可以像操作Excel里的筛选功能一样,方便的处理数据。

安装方法

用pip安装:

pip install qgrid
jupyter nbextension enable --py --sys-prefix qgrid
# only required if you have not enabled the ipywidgets nbextension yet
jupyter nbextension enable --py --sys-prefix widgetsnbextension

  

用conda安装:

# only required if you have not added conda-forge to your channels yet
conda config --add channels conda-forge
conda install qgrid
 

6.  放PPT

人在江湖飘,难免遇到要做PPT的时候。

但是,如果你的内容都已经放在Jupyter里了,再重新导入PPT,太麻烦了,我们自动转换吧。

一种方法是用Jupyter内置的PPT选项,依次点击菜单栏里的View → Cell Toolbar → Slideshow,之后每个单元格上面都会有一个灰色的横条,选Sub-Slide。

然后输入以下代码:

jupyter nbconvert *.ipynb --to slides --post serve
# insert your notebook name instead of *.ipynb

  

好了,现在就变成PPT样式的了,显示在端口8000,你也可以查看源代码找到PPT文件。

你也可以提前换好主题,比如onedork主题,然后再转换成PPT的的时候就是同一个主题风格的PPT了。

不过,用PyTorch默认方法生成的PPT代码不能编辑,这个时候就要用到RISE插件了。

RISE用到reveal.js来运行PPT,可以不退出PPT,直接运行代码。

先来安装RISE,推荐用conda:

conda install -c damianavila82 rise

其实不太推荐pip:

pip install RISE

  

然后调用JS和CSS:

jupyter-nbextension install rise --py --sys-prefix
#enable the nbextension:
jupyter-nbextension enable rise --py --sys-prefix

  

安装好啦,现在重新打开你的Jupyter Notebook,发现一个新的扩展,名叫“Enter/Exit RISE Slideshow”。

戳一下,一个可以边演示边改的PPT就好了。

7.  放嵌入链接和pdf

扔链接再跳转实在是太麻烦了,不如直接把素材放进Jupyter里面。

嵌入链接

#Note that http urls will not be displayed. Only https are allowed inside the Iframe
from IPython.display import IFrame
IFrame('https://en.wikipedia.org/wiki/HTTPS', width=800, height=450)

  

 

操作方式如下,当然你需要把链接换成你要放的链接:

嵌入pdf

from IPython.display import IFrame
IFrame('https://arxiv.org/pdf/1406.2661.pdf', width=800, height=450)

  

同样,把pdf链接换成你需要用的pdf。

Jupter 7个进阶功能的更多相关文章

  1. ASCIITable: 演示 Arduino 串口输出的进阶功能

    原文地址 - https://www.arduino.cc/en/Tutorial/ASCIITable ASCII字符表 本例展示了高级的串口打印功能,通过本功能可以在Arduino软件(IDE)的 ...

  2. antd Select进阶功能 动态更新、函数防抖

    一.动态更新Options Antd Select自带的搜索功能很多时候需要结合后端的接口,输入一个关键字的时候会自动更新选择器的选项. 下面列一些注意点 基础实现 选择器选项必须和每次更新的数据挂钩 ...

  3. Pytest - 进阶功能fixture

    1. 概述 Pytest的fixture功能灵活好用,支持参数设置,便于进行多用例测试,简单便捷,颇有pythonic.如果要深入学习pytest,必学fixture. fixture函数的作用: 完 ...

  4. 转载-jmeter进阶功能

    在这此对新版本jmeter的学习+温习的过程,发现了一些以前不知道的功能,所以,整理出来与大分享.本文内容如下. 如何使用英文界面的jmeter 如何使用镜像服务器 Jmeter分布式测试 启动Deb ...

  5. Redis学习三(进阶功能).

    一.排序 redis 支持对 list,set 和 zset 元素的排序,排序的时间复杂度是 O(N+M*log(M)).(N 是集合大小,M 为返回元素的数量) sort key [BY patte ...

  6. 10.python面向对象进阶功能

    isinstance(obj,cls)和issubclass(sub,super)(1)isinstance(obj,cls)检查一个对象obj是否是一个类cls的实例(2)issubclass(su ...

  7. 手把手教你编写一个具有基本功能的shell(已开源)

    刚接触Linux时,对shell总有种神秘感:在对shell的工作原理有所了解之后,便尝试着动手写一个shell.下面是一个从最简单的情况开始,一步步完成一个模拟的shell(我命名之为wshell) ...

  8. 基本功能的shell

    手把手教你编写一个具有基本功能的shell(已开源) 刚接触Linux时,对shell总有种神秘感:在对shell的工作原理有所了解之后,便尝试着动手写一个shell.下面是一个从最简单的情况开始,一 ...

  9. AE二次开发中几个功能速成归纳(符号设计器、创建要素、图形编辑、属性表编辑、缓冲区分析)

    /* * 实习课上讲进阶功能所用文档,因为赶时间从网上抄抄改改,凑合能用,记录一下以备个人后用. * * ----------------------------------------------- ...

随机推荐

  1. solr使用cursorMark做深度分页

    深度分页 深度分页是指给搜索结果指定一个很大的起始位移. 普通分页在给定一个大的起始位移时效率十分低下,例如start=1000000,rows=10的查询,搜索引擎需要找到前1000010条记录然后 ...

  2. jQuery对象的操作

    参考一篇不错的文章:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object 1. ...

  3. JavaScript基础知识点学习记录

    一.简介: JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言,同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如相应用户的各种操作. J ...

  4. centos7 安装Node.js并配置为全局可用

    本文Node.js版本为5.12.0,登录 https://nodejs.org/dist/v5.12.0/,需指定其他版本的话可以直接修改版本号进行登录. 为了方便使用tar命令对文件进行解压,我们 ...

  5. GitLab如何创建分支及拉取代码

    从gitlab地址进入进行操作 1.登录GitLab(账号密码由company统一提供,如果是自己操作的话,就需要先注册) 2.登录gitlab后对已创建好的项目进行分支创建(此处默认项目已创建好,如 ...

  6. Vue-ui常用组件库整理

    Vue-ui常用组件库整理 查看全部整理内容==> element-ui Element 是由饿了么UED设计.饿了么大前端开发的一套基于 Vue 2.0 的桌面端组件库. 这款是我用了很久的, ...

  7. ubuntu高版本如何设置开机启动脚本

    ubuntu-18.04不能像ubuntu14一样通过编辑rc.local来设置开机启动脚本 可以通过下列简单设置后,可以使rc.local重新发挥作用. 1.建立rc-local.service文件 ...

  8. 【Linux】【Tomcat】Tomcat的安装和配置等

    安装环境 :Linux(Ubuntu 版) 安装软件 : apache-tomcat-9.0.0.M1.tar.gz(下载地址http://tomcat.apache.org/) 步骤一 Tomcat ...

  9. spring初始化相关

    获取applicationContext implements ApplicationContextAware @Override public void setApplicationContext( ...

  10. 电子书 VS 纸质书

    电子书, 或者网络上的博客,技术文章(最好是 一系列的, 完整的). 比起纸质书来说, 优势在于: 1 根据左部的目录快速定位 到自己想看的章节.通过PgDn PgUp 等键盘功能快速翻页 2 方便的 ...