Jupyter Notebook最实用的5个魔术命令

编译:chux

出品:ATYUN订阅号

Jupyter Notebook是一个基于Web的交互式工具,机器学习和数据科学社区都频繁使用它。它们用于快速测试,作为报告工具,甚至是在线课程中非常复杂的学习材料。我最喜欢的一个功能是魔术命令。这些快捷方式可显着扩展Notebook的功能。以下是你应首先学习的五种命令列表,以便成为更好的数据向导。

%time,%timeit和%% time

你想知道你的代码需要运行多长时间吗?不出所料,你需要使用的魔术命令是时间及其变体。我经常使用cell magic版本(%% time)。这是对代码进行基准测试的快速方法,并向其他人表明他们需要多长时间来重新运行结果。

import numpy as np
from numpy.random import randint

# A function to simulate one million dice throws.
def one_million_dice():
    return randint(low=1, high=7, size=1000000)

# Let's try %time first
%time throws = one_million_dice()
%time mean = np.mean(throws)

# Outputs:
# Wall time: 20.6 ms
# Wall time: 3.01 ms

# Let's do the same with %timeit
%timeit throws = one_million_dice()
%timeit mean = np.mean(throws)

# Outputs:
# 10 loops, best of 3: 22.2 ms per loop
# 100 loops, best of 3: 2.86 ms per loop

# And finally %%time
%%time
throws = one_million_dice()
mean = np.mean(throws)

# Outputs:
# Wall time: 36.6 ms

%matplotlib

如果你之前进行过在线课程,则可能会将此魔术命令与内联参数结合使用。使用此命令可确保Jupyter Notebook显示你的绘图。对于每一个基于Notebook的报告来说,这可能是最关键的魔术命令。

from numpy.random import randint
import matplotlib.pyplot as plt

# Sample 1000 random values to create a scatterplot
x = randint(low=1, high=1000, size=100)
y = randint(low=1, high=1000, size=100)

# This will show nothing in a Jupyter Notebook
plt.scatter(x, y)
plt.show()

# Let the magic happen!
%matplotlib inline
plt.scatter(x, y)
plt.show()

%load_ext autoreload

这个神奇的命令允许你加载最重要的扩展名:autoreload。没有它,每次更改引用代码中的内容时都必须重新加载内核。以下代码段为你提供了如何使用它的简短示例:

# load the autoreload extension
%load_ext autoreload
# Set extension to reload modules every time before executing code
%autoreload 2

from helperfunctions import complicated_function_to_return_a_number

complicated_function_to_return_a_number()
# Output: 123

# Go to helperfunctions.py and change something withing the function

complicated_function_to_return_a_number()
# Output: 321

%system

如果你想使用shell,这个魔术命令可以帮到你。它非常适合快速检查当前目录和类似的东西。它看起来并不复杂,但是它是一个很好的工具。

# Easy to read version
%system date

# Shorthand with "!!" instead of "%system" works equally well
!!date

%who_ls

这个神奇的命令可以很好地向你展示环境中的变量列表。你还可以添加参数来定义要查看的变量类型,例如函数。

# Outputs a list of all interactive variables in your environment
%who_ls

# Reduces the output to interactive variables of type "function"
%who_ls function

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2018-08-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏做全栈攻城狮

电脑小白学习软件开发-C#的选择语句、异常捕获,进攻程序员

不得不说,C#这门语言是小编以为最好的语言。其优美的语法,最具人性化的新特性,以及无敌的开发工具令人陶醉。接触过不少语言,却一直回味写C#的那种状态。

10620
来自专栏互联网杂技

以后有机会写框架用得着的

在这个js框架随处乱跑的时代,你是否考虑过写一个自己的框架?下面的内容也许会有点帮助。 一个框架应该包含哪些内容? 1. 语言扩展 大部分现有的框架都提供了这部...

27850
来自专栏Crossin的编程教室

【Python 第30课】 字符串的索引和切片

前两天承蒙MacTalk池建强老师的推荐,让我们的学习队伍进一步壮大了。很多同学用的是Mac系统,而我是Linux党,很多Mac上的问题我没法帮忙解决。建议关注...

35570
来自专栏ytkah

帝国cms调用栏目自定义字段(栏目简介)如何操作

  开源的cms就像一个操作系统,可以满足大部分人的需求,如果你想增加一些特殊的功能,那就二次开发呗,就像APP一样。帝国cms默认的栏目是没有调用栏目自定义字...

62180
来自专栏程序员互动联盟

【编程技巧】提高程序员技能的11招

1.清晰的分析问题 2.三思而后行如何解决这个问题 3.收集完整的需求。 花点时间,想好产品的目标形态和最终的用户群。在这个阶段思路清晰会给以后节省很多时间。 ...

35870
来自专栏Crossin的编程教室

【Python 第45课】 查天气(3)

看一下我们已经拿到的json格式的天气数据: { "weatherinfo": { "city": "南京", "cit...

387110
来自专栏码洞

全栈虚拟机GraalVM初体验

近日Oracle开源了一个实验性的产品GraalVM,官方称之为Universal GraalVM。它打通了不同语言之间的鸿沟,让我们可以进行混合式多语言编程。...

20820
来自专栏互联网技术栈

UML-类间关系

指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Jav...

8030
来自专栏企鹅号快讯

Python循环控制之for

各位小伙伴们 大家周三愉快 今天我们要来共同探讨 另外一个在Python中 (严格的说实在所有语言中) 最重要的语句之一 For()循环控制语句 技术要点: f...

22460
来自专栏杨熹的专栏

2 天入门 Java-Day 1

图片来自 新生大学 公众号 今天一口气敲完了慕课网上的 《Java入门第一季》,这个课的老师讲的挺好的,视频资料做的挺用心。 课程操作界面很像 codecade...

44880

扫码关注云+社区

领取腾讯云代金券