技术分享——Jupyter Notebook有哪些奇技淫巧上
ztj100 2025-07-15 02:16 3 浏览 0 评论
通过使用Jupyter Notebook,总结了25条心得体会。内容太多,分2期给大家分享一下。
1.键盘快捷键
任何高级用户都知道,键盘快捷键将为你节省大量时间。Jupyter在以下菜单的顶部菜单下存储了键盘快捷列表: Help > Keyboard Shortcuts或通过H 在命令模式下按 (稍后会详细介绍)。每次更新Jupyter时都值得查看一下,因为会添加更多快捷方式。
访问键盘快捷方式的另一种方法,是使用命令面板:( Cmd + Shift + P 或 Ctrl + Shift + P 在Linux和Windows上)。此对话框可按名称运行任何命令-如果不知道某个操作的键盘快捷键或要执行的操作没有键盘快捷键,则此对话框很有用。该功能类似于Mac上的Spotlight搜索。
常用快捷键:
- Esc 将带你进入命令模式,可以使用箭头键在笔记本中浏览。
- 在命令模式下:
A 在当前单元格上方插入一个新单元格, B 在其下方插入一个新单元格。 M 将当前单元格更改为Markdown, Y 将其更改回代码 D + D (按两次键)删除当前单元格
- Enter 从命令模式返回到给定单元格的编辑模式。
- Shift + Tab 显示刚刚在代码单元中键入的对象的文档字符串(文档),可以继续按此快捷键以循环浏览几种文档模式。
- Ctrl + Shift + - 从光标所在的位置将当前单元格拆分为两个。
- Esc + F 查找并替换代码,而不替换输出。
- Esc + O 切换单元格输出。
- 选择多个单元格:
Shift + J 或 Shift + Down 选择向下的下一个。您也可以使用Shift + K 或 Shift + Up选择向上 。 选定单元格后,即可批量删除/复制/剪切/粘贴/运行它们。当需要移动笔记本计算机的部件时,这很有用。 也可以使用 Shift + M 合并多个单元格。
2.整齐的变量显示
第一部分是众所周知的。通过用变量名或语句的未分配输出完成Jupyter单元格,Jupyter将显示该变量。这在处理Pandas DataFrame时特别有用,因为输出被整齐地格式化为表格。
还可以更改
ast_note_interactivityModify kernel选项,以使Jupyter对任何变量或语句执行此操作,因此可以一次查看多个语句的值。
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
from pydataset import data
quakes = data('quakes')
quakes.head()
quakes.tail()
如果要为Jupyter的所有实例(笔记本和控制台)设置此行为,只需
~/.ipython/profile_default/ipython_config.py 使用以下几行创建一个文件。
c = get_config()
# Run all nodes interactively
c.InteractiveShell.ast_node_interactivity = "all"
3.轻松链接到文档
在 Help菜单内, 找到指向常见库(包括NumPy,Pandas,SciPy和Matplotlib)在线文档的便捷链接。
同样不要忘记,通过在库,方法或变量添加之前,可以访问Docstring以快速获取语法参考。
?str.replace()
Docstring:
S.replace(old, new[, count]) -> str
Return a copy of S with all occurrences of substring
old replaced by new. If the optional argument count is
given, only the first count occurrences are replaced.
Type: method_descriptor
4.在笔记本中绘图
笔记本编辑图的小功能:
- %matplotlib notebook:提供交互性,但可能会有点慢,因为渲染是在服务器端完成的。
- Seaborn:建立在Matplotlib之上。只需导入Seaborn,您的matplotlib图就可以变得“更漂亮”,而无需进行任何代码修改。
- mpld3:为matplotlib代码提供了替代渲染器(使用d3)。
- 背景虚化
- plot.ly:可以生成漂亮的图,这曾经是一项付费服务,最近才开源。
- Altair:是一个相对较新的Python声明式可视化库。它易于使用且可制作精美的图,但是自定义这些图的功能却不如Matplotlib强大。
5. IPython魔术命令
基于IPython内核,Jupyter可以访问IPython内核中的所有Magics。
# This will list all magic commands
%lsmagic
Available line magics:
%alias %alias_magic %autocall %automagic %autosave %bookmark %cat %cd %clear %colors %config %connect_info %cp %debug %dhist %dirs %doctest_mode %ed %edit %env %gui %hist %history %killbgscripts %ldir %less %lf %lk %ll %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %lx %macro %magic %man %matplotlib %mkdir %more %mv %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %popd %pprint %precision %profile %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %rm %rmdir %run %save %sc %set_env %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode
Available cell magics:%%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%js %%latex %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile
Automagic is ON, % prefix IS NOT needed for line magics.
6. IPython Magic –%env:设置环境变量
你可以管理笔记本的环境变量,而无需重新启动jupyter服务器进程。一些库(例如theano)使用环境变量来控制行为,%env是最方便的方法。
# Running %env without any arguments
# lists all environment variables# The line below sets the environment
# variable
%env OMP_NUM_THREADS%env OMP_NUM_THREADS=4
env: OMP_NUM_THREADS=4
7. IPython Magic –%run:执行python代码
%run可以从.py文件执行python代码。鲜为人知的是它还可以执行其他jupyter笔记本,这一点非常有用。
请注意,using %run 与导入python模块不同。
# this will execute and show the output from
# all code cells of the specified notebook
%run ./two-histograms.ipynb
8. IPython Magic –%load:从外部脚本插入代码
这将用外部脚本替换单元格的内容。您可以使用计算机上的文件作为源,也可以使用URL。
# Before Running
%load ./hello_world.py
# After Running
# %load ./hello_world.py
if __name__ == "__main__":
print("Hello World!")
Hello World!
9. IPython Magic –%store:在笔记本之间传递变量。
该 %store 命令使您可以在两个不同的笔记本之间传递变量。
data = 'this is the string I want to pass to different notebook'
%store data
del data # This has deleted the variable
Stored 'data' (str)
现在,在新笔记本中…
%store -r data
print(data)
this is the string I want to pass to different notebook
10. IPython Magic –%who:列出全局范围的所有变量。
%who不带任何参数的命令将列出全局范围中存在的所有变量。
one = "for the money"
two = "for the show"
three = "to get ready now go cat go"
%who str
one three two
11. IPython Magic –计时
有两个IPython Magic命令可用于计时- %%time 和 %timeit。当有一些慢速代码并试图确定问题出在哪里时,这些功能特别方便。
%%time 将为您提供有关单元格中单次运行代码的信息。
%%time
import time
for _ in range(1000):
time.sleep(0.01) # sleep for 0.01 seconds
CPU times: user 21.5 ms, sys: 14.8 ms, total: 36.3 ms Wall time: 11.6 s
%%timeit 使用Python timeit模块 ,该模块运行一条语句100,000次(默认情况下),然后提供最快的三次平均值。
import numpy
%timeit numpy.random.normal(size=100)
The slowest run took 7.29 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 5.5 us per loop
12. IPython Magic – %% writefile和%pycat:导出单元格的内容/显示外部脚本的内容
使用 %%writefile 魔术将那个单元格的内容保存到一个外部文件中。 %pycat 执行相反的操作,并(在弹出窗口中)向您显示外部文件的语法高亮显示的内容。
%%writefile pythoncode.py
import numpy
def append_if_not_exists(arr, x):
if x not in arr:
arr.append(x)def some_useless_slow_function():
arr = list()
for i in range(10000):
x = numpy.random.randint(0, 10000)
append_if_not_exists(arr, x)
Writing pythoncode.py
%pycat pythoncode.py
import numpy
def append_if_not_exists(arr, x):
if x not in arr:
arr.append(x)def some_useless_slow_function():
arr = list()
for i in range(10000):
x = numpy.random.randint(0, 10000)
append_if_not_exists(arr, x)
13. IPython Magic –%prun:显示您的程序在每个函数中花费了多少时间。
使用`%prun statement_name`将为您提供一个有序表,向您显示该语句中每个内部函数被调用的次数,每次调用所花费的时间以及该函数所有运行的累积时间。
%prun some_useless_slow_function()
26324 function calls in 0.556 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
10000 0.527 0.000 0.528 0.000 :2(append_if_not_exists)
10000 0.022 0.000 0.022 0.000 {method 'randint' of 'mtrand.RandomState' objects}
1 0.006 0.006 0.556 0.556 :6(some_useless_slow_function)
6320 0.001 0.000 0.001 0.000 {method 'append' of 'list' objects}
1 0.000 0.000 0.556 0.556 :1()
1 0.000 0.000 0.556 0.556 {built-in method exec}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
相关推荐
- Win10预览版10532已知问题汇总(微软win11正式版已知问题一览)
-
IT之家讯微软已向Insider用户推送了Win10预览版10532更新,本次更新对右键菜单、《Windows反馈》应用以及Edge浏览器进行了改进。除此之外还包含一些Bug,汇总如下,有意升级Wi...
- Gabe Aul正测试Win10 Mobile 10532,Insider用户还需等
-
IT之家讯本月中旬微软向Insider用户推送了Win10Mobile预览版10512,该版本修复了一些Bug,增强了系统稳定性,但依然存在一些问题。今天,微软Insider项目负责人GabeAu...
- 微软开始推送Win10预览版10532快速版更新
-
8月28日消息,刚才,微软推送了Win10Build10532快速版,修复了之前的Bug,并带来了三项改进。主要来说,这次的更新改进了右键菜单的UI,使其更具Modern风格(见上图)。此外,更新...
- Win10预览版10532更新内容大全(windows10更新预览版)
-
IT之家讯今天凌晨微软向Insider用户推送了Win10预览版10532快速版更新,本次更新主要带来了三处改进,汇总如下:o改进右键菜单,外观更加Modern。这是基于网友要求界面一致的反馈做出...
- 无法升级Win10预览版10532?也许Hyper-V在搞鬼
-
根据IT之家网友的反映,安装了微软虚拟机Hyper-V的Win10预览版用户无法成功升级Build10532版本,安装过程中会被要求回滚系统。很多朋友在尝试关闭虚拟机之后重启安装程序,结果仍然无法顺...
- Win10预览版10532界面兴起“酷黑”风潮
-
Win10预览版10532的界面改动还是较为明显的,主要体现在右键菜单上面。总体来看,该版本的右键菜单间距更宽,视觉上更大气,操作上更便于触控。具体来说,任务栏右键菜单的变化最为明显。除了增加选项的宽...
- Win10预览版10532上手图集(windows10预览版下载)
-
IT之家讯8月28日,微软今天推送了Win10预览版10532快速版更新,在该版本中,微软主要是加强细节上调整,并且主要是增强Edge浏览器性能等。在Windows10预览版10532中,微软改进了...
- Win10预览版10532上手视频亮点演示
-
IT之家讯8月28日消息,今天凌晨微软向WindowsInsider快速通道用户推送了Win10预览版10532。在Windows10预览版10532中,微软改进了右键菜单,外观更加现代化。另外还...
- 第二篇 前端框架Vue.js(vue前端框架技术)
-
前端三大核心是网页开发的基础,Vue则是基于它们构建的“生产力工具”。通俗理解就是HTML是化妆的工具如眉笔,CSS是化妆品如口红,JavaScript是化妆后的互动,而Vue就是化妆助手。有了化妆工...
- 基于SpringBoot + vue2实现的旅游推荐管理系统
-
项目描述...
- 基于Vue以及iView组件的后端管理UI模板——iview-admin
-
介绍iView-admin是一套后端管理界面模板,基于Vue2.0,iView(现在为ViewUI)组件是一套完整的基于Vue的高质量组件库,虽然Github上有一套非常火的基于ElementUI...
- 别再说你会SPA开发了,这5个核心你真的搞懂了吗?
-
前言此spa非彼spa,不是你所熟知的spa。你所熟知的spa作者肯定是没有你熟悉的。我们这里指的是在前端开发中的一种模型,叫作单页应用程序,顾名思义,就是整个项目只有一个页面,而页面中的内容是动态的...
- React.js Top20面试题(react.js中文官网)
-
概述作为React开发者,对框架的关键概念和原则有扎实的理解是很重要的。考虑到这一点,我整理了一份包含20个重要问题的清单,每个React开发者都应该知道,无论他们是在面试工作还是只是想提高技能。...
- 美媒:特朗普签署行政令后,FBI又发现约2400份、总计超14000页涉肯尼迪遇刺案文件
-
来源:环球时报新媒体1月23日特朗普下令公布肯尼迪遇刺案相关机密文件图源:美媒综合福克斯新闻网和Axios网站10日报道,在总统特朗普签署行政令,要求公布“肯尼迪遇刺案”相关政府机密文件之后,美国...
- 2021 年 Node.js 开发人员学习路线图
-
Node.js自发布以来,已成为业界重要破局者之一。Uber、Medium、PayPal和沃尔玛等大型企业,纷纷将技术栈转向Node.js。Node.js支持开发功能强大的应用,例如实时追踪...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- Win10预览版10532已知问题汇总(微软win11正式版已知问题一览)
- Gabe Aul正测试Win10 Mobile 10532,Insider用户还需等
- 微软开始推送Win10预览版10532快速版更新
- Win10预览版10532更新内容大全(windows10更新预览版)
- 无法升级Win10预览版10532?也许Hyper-V在搞鬼
- Win10预览版10532界面兴起“酷黑”风潮
- Win10预览版10532上手图集(windows10预览版下载)
- Win10预览版10532上手视频亮点演示
- 第二篇 前端框架Vue.js(vue前端框架技术)
- 基于SpringBoot + vue2实现的旅游推荐管理系统
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)
- vmware17pro最新密钥 (34)
- mysql单表最大数据量 (35)