ipython 是 jupyter notebook的前身并拥有ipython的全部功能

     
 

jupyter拥有 cell, markdown 整合的功能, 能同时运行代码, 而且是多组的. 同时也可以插入markdown这种多功能注释 包括图片(但支持很差).

写教程,写博客非常一流. 而且还可以上传到jupyterhub…据说要自己搭建

     
 

对于初学者来说, jupyter毕竟是一个web应用, 存储文件有不稳定的地方. 建议还是使用pycharm这类的软件编写代码. 如果是用于写博客, sublime可以安装插件copy as html jupyter对于copy的优化不够. 特别是离线图片保存起来是不可以显示的.

jupyter详细教程 http://blog.csdn.net/tina_ttl/article/details/51031113

Python·Jupyter Notebook各种使用方法记录·持续更新

标签(空格分隔): Python

Jupyter notebook )前身为IPython Notebook,学习时,可以找两者的教程

一、 Jupyter NoteBook的安装

1.1 新版本Anaconda自带Jupyter

  • 目前,最新版本的Anaconda是自带Jupyter NoteBook的,不需要再单独安装 

1.2 老版本Anacodna需自己安装Jupyter

Jupyter Notebook安装的官方网站

  1. In
    [1]:
    from
    IPython.core.interactiveshell import
    InteractiveShell
  2. InteractiveShell.ast_node_interactivity =
    "all"
  3. In
    [2]:
    from pydataset import data
  4. quakes = data('quakes')
  5. quakes.head()
  6. quakes.tail()
  7. Out[2]:
  8. lat long depth mag stations
  9. 1
    -20.42
    181.62
    562
    4.8
    41
  10. 2
    -20.62
    181.03
    650
    4.2
    15
  11. 3
    -26.00
    184.10
    42
    5.4
    43
  12. 4
    -17.97
    181.66
    626
    4.1
    19
  13. 5
    -20.42
    181.96
    649
    4.0
    11
  14. Out[2]:
  15. lat long depth mag stations
  16. 996
    -25.93
    179.54
    470
    4.4
    22
  17. 997
    -12.28
    167.06
    248
    4.7
    35
  18. 998
    -20.13
    184.20
    244
    4.5
    34
  19. 999
    -17.40
    187.80
    40
    4.5
    14
  20. 1000
    -21.59
    170.56
    165
    6.0
    119

如果你想在各种情形下(Notebook和Console)Jupyter都同样处理,用下面的几行简单的命令创建文件~/.ipython/profile_default/ipython_config.py即可实现:

  1. c = get_config()
  2. # Run all nodes interactively
  3. c.InteractiveShell.ast_node_interactivity =
    "all"

、轻松链接到文档

在Help 菜单下,你可以找到常见库的在线文档链接,包括Numpy,Pandas,Scipy和Matplotlib等。 
另外,在库、方法或变量的前面打上?,即可打开相关语法的帮助文档。

  1. In
    [3]:
    ?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


在notebook里作图

在notebook里作图,有多个选择: 
matplotlib (事实标准),可通过%matplotlib inline 激活,详细链接 
- %matplotlib notebook 提供交互性操作,但可能会有点慢,因为响应是在服务器端完成的。 
mpld3 提供matplotlib代码的替代性呈现(通过d3),虽然不完整,但很好。 
bokeh 生成可交互图像的更好选择。 
plot.ly 可以生成非常好的图,可惜是付费服务。

 

、 Jupyter Magic命令

上文提到的%matplotlib inline 是Jupyter Magic命令之一。 
推荐阅读Jupyter magic命令的相关文档,它一定会对你很有帮助。下面是我最爱的几个:

、 Jupyter Magic-%env:设置环境变量

不必重启jupyter服务器进程,也可以管理notebook的环境变量。有的库(比如theano)使用环境变量来控制其行为,%env是最方便的途径。

In [55]: # Running %env without any arguments

# lists all environment variables

   
 

# The line below sets the environment

# variable OMP_NUM_THREADS

%env OMP_NUM_THREADS=4

env: OMP_NUM_THREADS=4

、Jupyter Magic - %run: 运行python代码

%run 可以运行.py格式的python代码——这是众所周知的。不那么为人知晓的事实是它也可以运行其它的jupyter notebook文件,这一点很有用。 
注意:使用%run 与导入一个python模块是不同的。

In [56]: # this will execute and show the output from

# all code cells of the specified notebook

%run ./two-histograms.ipynb

 

、Jupyter Magic -%load:从外部脚本中插入代码

该操作用外部脚本替换当前cell。可以使用你的电脑中的一个文件作为来源,也可以使用URL。

In [ ]: # Before Running

%load ./hello_world.py

In [61]: # After Running

# %load ./hello_world.py

if __name__ == "__main__":

print("Hello World!")

Hello World!

、Jupyter Magic - %store: 在notebook文件之间传递变量

%store 命令可以在两个notebook文件之间传递变量。

In [62]: data = 'this is the string I want to pass to different notebook'

%store data

del data # This has deleted the variable

Stored 'data' (str)

现在,在一个新的notebook文档里……

In [1]: %store -r data

print(data)

this is the string I want to pass to different notebook

、Jupyter Magic - %who: 列出所有的全局变量

不加任何参数, %who 命令可以列出所有的全局变量。加上参数 str 将只列出字符串型的全局变量。

In [1]: one = "for the money"

two = "for the show"

three = "to get ready now go cat go"

%who str

one three two

、Jupyter Magic – 计时

有两种用于计时的jupyter magic命令: %%time 和 %timeit.当你有一些很耗时的代码,想要查清楚问题出在哪时,这两个命令非常给力。 
仔细体会下我的描述哦。 
%%time 会告诉你cell内代码的单次运行时间信息。

In [4]: %%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

,000次(默认值),然后提供最快的3次的平均值作为结果。

In [3]: 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 µs per loop

、Jupyter Magic - %%writefile and %pycat:导出cell内容/显示外部脚本的内容

使用%%writefile magic可以保存cell的内容到外部文件。
而%pycat功能相反,把外部文件语法高亮显示(以弹出窗方式)。

In [7]: %%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

In [8]: %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)

、Jupyter Magic - %prun: 告诉你程序中每个函数消耗的时间

使用%prun+函数声明会给你一个按顺序排列的表格,显示每个内部函数的耗时情况,每次调用函数的耗时情况,以及累计耗时。

In [47]: %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 <ipython-input-46-b52343f1a2d5>: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 <ipython-input-46-b52343f1a2d5>: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 <string>:1(<module>)

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}

、Jupyter Magic –用%pdb调试程序

Jupyter 有自己的调试界面The Python Debugger (pdb),使得进入函数内部检查错误成为可能。 
Pdb中可使用的命令见
链接

In [ ]: %pdb

   
 

def pick_and_take():

picked = numpy.random.randint(0, 1000)

raise NotImplementedError()

   
 

pick_and_take()

Automatic pdb calling has been turned ON

---------------------------------------------------------------------------

NotImplementedError Traceback (most recent call last)

<ipython-input-24-0f6b26649b2e> in <module>()

5 raise NotImplementedError()

6

----> 7 pick_and_take()

   
 

<ipython-input-24-0f6b26649b2e> in pick_and_take()

3 def pick_and_take():

4 picked = numpy.random.randint(0, 1000)

----> 5 raise NotImplementedError()

6

7 pick_and_take()

   
 

NotImplementedError:

> <ipython-input-24-0f6b26649b2e>(5)pick_and_take()

3 def pick_and_take():

4 picked = numpy.random.randint(0, 1000)

----> 5 raise NotImplementedError()

6

7 pick_and_take()

   
 

ipdb>

、末句函数不输出

有时候不让末句的函数输出结果比较方便,比如在作图的时候,此时,只需在该函数末尾加上一个分号即可。

In [4]: %matplotlib inline

from matplotlib import pyplot as plt

import numpy

x = numpy.linspace(0, 1, 1000)**1.5

In [5]: # Here you get the output of the function

plt.hist(x)

Out[5]:

(array([ 216., 126., 106., 95., 87., 81., 77., 73., 71., 68.]),

array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]),

<a list of 10 Patch objects>)

In [6]: # By adding a semicolon at the end, the output is suppressed.

plt.hist(x);

、运行Shell命令

在notebook内部运行shell命令很简单,这样你就可以看到你的工作文件夹里有哪些数据集。

In [7]: !ls *.csv

nba_2016.csv titanic.csv

pixar_movies.csv whitehouse_employees.csv

、用LaTex 写公式

当你在一个Markdown单元格里写LaTex时,它将用MathJax呈现公式:如 
$$ P(A \mid B) = \frac{P(B \mid A) , P(A)}{P(B)} $$

会变成 

、在notebook内用不同的内核运行代码

如果你想要,其实可以把不同内核的代码结合到一个notebook里运行。 
只需在每个单元格的起始,用Jupyter magics调用kernal的名称:

  • %%bash
  • %%HTML
  • %%python2
  • %%python3
  • %%ruby
  • %%perl
  • In [6]: %%bash
  • for i in {1..5}
  • do
  • echo "i is $i"
  • done

i is 1

i is 2

i is 3

i is 4

i is 5

、给Jupyter安装其他的内核

Jupyter的优良性能之一是可以运行不同语言的内核。下面以运行R内核为例说明:

简单的方法:通过Anaconda安装R内核

conda install -c r r-essentials

稍微麻烦的方法:手动安装R内核

如果你不是用Anaconda,过程会有点复杂,首先,你需要从CRAN安装R。 
之后,启动R控制台,运行下面的语句:

install.packages(c('repr', 'IRdisplay', 'crayon', 'pbdZMQ', 'devtools'))

devtools::install_github('IRkernel/IRkernel')

IRkernel::installspec() # to register the kernel in the current R installation

、在同一个notebook里运行R和Python

要这么做,最好的方法事安装rpy2(需要一个可以工作的R),用pip操作很简单: 
pip install rpy2 
然后,就可以同时使用两种语言了,甚至变量也可以在二者之间公用:

In [1]: %load_ext rpy2.ipython

In [2]: %R require(ggplot2)

Out[2]: array([1], dtype=int32)

In [3]: import pandas as pd

df = pd.DataFrame({

'Letter': ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'],

'X': [4, 3, 5, 2, 1, 7, 7, 5, 9],

'Y': [0, 4, 3, 6, 7, 10, 11, 9, 13],

'Z': [1, 2, 3, 1, 2, 3, 1, 2, 3]

})

In [4]: %%R -i df

ggplot(data = df) + geom_point(aes(x = X, y= Y, color = Letter, size = Z))

 

、用其他语言写函数

有时候numpy的速度有点慢,我想写一些更快的代码。 
原则上,你可以在动态库里编译函数,用python来封装… 
但是如果这个无聊的过程不用自己干,岂不更好? 
你可以在cython或fortran里写函数,然后在python代码里直接调用。 
首先,你要先安装:

!pip install cython fortran-magic

   
 

   
 

In [ ]: %load_ext Cython

In [ ]: %%cython

def myltiply_by_2(float x):

return 2.0 * x

In [ ]: myltiply_by_2(23.)

我个人比较喜欢用Fortran,它在写数值计算函数时十分方便。更多的细节在这里

In [ ]: %load_ext fortranmagic

In [ ]: %%fortran

subroutine compute_fortran(x, y, z)

real, intent(in) :: x(:), y(:)

real, intent(out) :: z(size(x, 1))

   
 

z = sin(x + y)

   
 

end subroutine compute_fortran

In [ ]: compute_fortran([1, 2, 3], [4, 5, 6])

还有一些别的跳转系统可以加速python 代码。更多的例子见链接

、支持多指针

Jupyter支持多个指针同步编辑,类似Sublime Text编辑器。按下Alt键并拖拽鼠标即可实现。

 

、Jupyter外接拓展

Jupyter-contrib extensions是一些给予Jupyter更多更能的延伸程序,包括jupyter spell-checker和code-formatter之类. 
下面的命令安装这些延伸程序,同时也安装一个菜单形式的配置器,可以从Jupyter的主屏幕浏览和激活延伸程序。

!pip install https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master

!pip install jupyter_nbextensions_configurator

!jupyter contrib nbextension install --user

!jupyter nbextensions_configurator enable --user

、从Jupyter notebook创建演示稿

Damian Avila的RISE允许你从已有的notebook创建一个powerpoint形式的演示稿。 
你可以用conda来安装RISE:

conda install -c damianavila82 rise

或者用pip安装:

pip install RISE

然后运行下面的代码来安装和激活延伸程序:

jupyter-nbextension install rise --py --sys-prefix

jupyter-nbextension enable rise --py --sys-prefix

、Jupyter输出系统

Notebook本身以HTML的形式显示,单元格输出也可以是HTML形式的,所以你可以输出任何东西:视频/音频/图像。 
这个例子是浏览我所有的图片,并显示前五张图的缩略图。

In [12]: import os

from IPython.display import display, Image

names = [f for f in os.listdir('../images/ml_demonstrations/') if f.endswith('.png')]

for name in names[:5]:

display(Image('../images/ml_demonstrations/' + name, width=100))

 
 
 
 
 

我们也可以用bash命令创建一个相同的列表,因为magics和bash运行函数后返回的是python 变量:

In [10]: names = !ls ../images/ml_demonstrations/*.png

names[:5]

Out[10]: ['../images/ml_demonstrations/colah_embeddings.png',

'../images/ml_demonstrations/convnetjs.png',

'../images/ml_demonstrations/decision_tree.png',

'../images/ml_demonstrations/decision_tree_in_course.png',

'../images/ml_demonstrations/dream_mnist.png']

、大数据分析

很多方案可以解决查询/处理大数据的问题:

  •  

     
     

    ipyparallel(之前叫 ipython cluster)
    是一个在python中进行简单的map-reduce运算的良好选择。我们在rep中使用它来并行训练很多机器学习模型。

、分享notebook

分享notebook最方便的方法是使用notebook文件(.ipynb),但是对那些不使用notebook的人,你还有这些选择:

初学者需要IPython 与 Jupyter Notebook 吗?的更多相关文章

  1. ipython 编辑器 jupyter notebook如何将 ipynb 转成 py 并在 jupyter notebook 中继续引用

    首先将 要被做成 module 的 ipython 代码 download as py 然后将 down 下来的 py 文件上传至 work 目录(也就是编写导入模块的py文件目录) 这部分 的 wo ...

  2. linux安装python3 ,安装IPython ,安装jupyter notebook

    安装python3    下载到 /opt/中 1.下载python3源码,选择3.6.7因为ipython依赖于>3.6的python环境wget https://www.python.org ...

  3. IPython与Jupyter notebook 安装与配置,插件扩展,主题,PDF输出

    基于 python2.7.13 32-bit版本安装 1.安装pyreadline https://pypi.python.org/pypi/pyreadline 下载对应的32位版本 安装Micro ...

  4. Jupyter Notebook使用教程

    关于安装我就不说了,可以参考知乎https://zhuanlan.zhihu.com/p/33105153(总结的很全面) 首先打开Jupyter Notebook后,新建notebook:点击右上角 ...

  5. 详解 jupyter notebook 集成 spark 环境安装

    来自: 代码大湿 代码大湿 1 相关介绍 jupyter notebook是一个Web应用程序,允许你创建和分享,包含活的代码,方程的文件,可视化和解释性文字.用途包括:数据的清洗和转换.数值模拟.统 ...

  6. Jupyter notebook操作技巧

    学习笔记:Jupyter notebook操作技巧 一.jupyter notebook简介.用途.优势和缺点 二. 单元Cell: 三.操作技巧 - 给Jupyter换主题 - 笔记本扩展(nbex ...

  7. Python,Jupyter Notebook,IPython快速安装教程

    0.安装环境 Windows10,Python3.5.1,IPython,jupyter notebook,and other functionality 官方安装文档Linux版3.x 官方安装文档 ...

  8. [转]Linux中python3.6+ipython+Jupyter Notebook环境

    python3.6安装 下载python安装包,这里下载的最新的3.6.1版本 https://www.python.org/ftp/python/3.6.1/ 将安装包上传到服务器并解压 tar z ...

  9. ubuntu下设置jupyter notebook 2017年07月29日 19:28:34 小旋锋 阅读数:8329 标签: ubuntu 更多 个人分类: python 二三事 来源:http://blog.csdn.net/suzyu12345/article/details/51037905 Ipython Notebook现在已经改名为Ipython jupyter,是最知名最好用的

    ubuntu下设置jupyter notebook     来源:http://blog.csdn.net/suzyu12345/article/details/51037905 Ipython No ...

随机推荐

  1. python进程进阶

    本节目录: 1.进程的其他方法 2.验证进程之间是空间隔离的 3.守护进程 4.互斥锁 5.编写一个伪抢票程序 6.数据共享 7.for循环,join 8.队列 9.用队列完成一个生产者消费者模型 1 ...

  2. python 面向过程和面向对象比较

    面向过程 VS 面向对象 面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式. 优点是:复杂度 ...

  3. mysql 查询json字段 json_extract (mysql 5.7及以上)

    找第一层: SELECT * FROM tourists WHERE json_data->'$.weixinOpenId' = '299485886686868' 或者 SELECT * FR ...

  4. element-ui日期组件DatePicker选择日期范围赋值编辑问题

    最近在项目中使用element-UI的日期范围组件时遇到一个问题,相信很多人也做过这种场景,一个录入页面也同时是编辑页面,编辑的时候就需要先赋值.但是我给date组件赋值后,确无法操作了,change ...

  5. 【OpenCV-Python】-图像形态学转化

    原文为段立辉翻译,感谢Linux公社此文档为自学转述,如有侵权请联系本人. 目标: • 学习不同的形态学操作,例如腐蚀,膨胀,开运算,闭运算等 • 学习的函数有:cv2.erode(),cv2.dil ...

  6. (转)nmon和nmon analyser的下载和使用

    原文:https://blog.csdn.net/a7442358/article/details/50186283 nmon 工具可以为 AIX 和 Linux 性能专家提供监视和分析性能数据的功能 ...

  7. php+windows环境安装

    1.下载并安装phpstorm 2.查找激活码激活phpstorm 3.由于php官方没有提供exe版本,安装phpstudy,获得windows下exe编译版本的php 4.安装VisualSVN ...

  8. 深入java虚拟机学习 -- 类的卸载

    类的生命周期 在开始本节之前让我们再来回顾下类的生命周期 没看过前6个过程的同学建议从头看下<深入java虚拟机学习 -- 类的加载机制>,这里就不再过多介绍了,着重说下类的卸载 类的卸载 ...

  9. light table 添加行号 更新

    在上一个笔记修改完字体后.再添加上行号

  10. js需要清楚的内存模型

    原型 原型重写 原型继承 组合方式实现继承 函数作用域链