ipyhon 与 ipython notebook

2024-06-04 19:58
文章标签 notebook ipython ipyhon

本文主要是介绍ipyhon 与 ipython notebook,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在 IPython 的官网(ipython.org)上,介绍其的第一句话便是:IPython 是一个加强版的交互式 Shell。另外很多介绍 IPython 的文章也常以这句话开头,但这句话实在是等于没说。让 IPython 在各种 shell(IDE) 中脱颖而出,成为科学计算标配的,并不是按 Tab 键代码补完、以 % 开头的魔术命令这些大家都有的东西,而是与 matplotlib 这个数据可视化(绘图)包的深度集成以及奇妙的 Notebook。

IPython 较早的富 GUI 实现应该是 Qt Console。过去在标准 shell 里绘图时,弹出的绘图窗口会接管 shell 会话的控制权,你想继续输入命令就必须先把绘图窗口关掉。这对于希望同时实现可视化和交互式过程的数据分析用户来说显然是难以忍受的,因此 Qt console 站出来解决了这个问题。在 Qt console 中通过 matplotlib 绘制的图形会独立嵌于控制台中,并不影响你继续输入命令。

2011年,由 Brian Granger 领导的 IPython 团队开始开发一种基于Web技术的交互式计算文档格式,即 IPython Notebook。为什么说它是文档格式,而非计算工具呢?实际上它两者都是。Notebook 在交互上使用了 C/S 结构,它通过 Tornado 建立一个 shell 服务器,并使用浏览器作为客户端。另外 notebook 页面都被保存为 .ipynb 的类 JSON 文件格式。这种文件格式也是 Notebook 最吸引人的地方。

IPython Notebook 更详细的介绍在下面第二节中给出,第一节讲的是一些对 IPython 的各种实现通用的功能。 

基础


Tab 键自动完成

和其他 IDE 差不多,自己多试试就好了 

内省

在变量名或命令的前面或后面加一个 “?” 并执行,可以用于显示该对象的一些通用信息,如对象类型、文档字符串等,这就叫做对象内省。这种操作查看到的信息,尤其是函数和类的信息,比通常直接引用变量名然后回车所看到的(__repr__)要好。“?” 的另一个用法是可以搜索 IPython 的命名空间,配合通配符使用效果如下:


In [1]:import numpy as np
In [2]:np.*load*?
np.load
np.loads
np.loadtxt
np.pkgload

使用双问号“??”还可以查看对象的源代码(如果可见的话)。 

魔术命令

在 IPython 的会话环境中,所有文件都可以通过 %run 命令来当做脚本执行,并且文件中的变量也会随即导入当前命名空间。即,对于一个模块文件,你对他使用 %run 命令的效果和 from module import * 相同,除非这个模块文件定义了 main 函数(if __name__ == '__main__:'),这种情况下 main 函数还会被执行。

这种以 % 开头的命令在 IPython 中被称为魔术命令,用于加强 shell 的功能。常用的魔术命令有: 

%quickref显示 IPython 快速参考
%magic显示所有魔术命令的详细文档
%debug从最新的异常跟踪的底部进入交互式调试器
%pdb在异常发生后自动进入调试器
%reset删除 interactive 命名空间中的全部变量
%run script.py执行 script.py
%prun statement通过 cProfile 执行对 statement 的逐行性能分析
%time statement测试 statement 的执行时间
%timeit statement多次测试 statement 的执行时间并计算平均值
%who、%who_ls、%whos显示 interactive 命名空间中定义的变量,信息级别/冗余度可变
%xdel variable删除 variable,并尝试清除其在 IPython 中的对象上的一切引用
!cmd在系统 shell 执行 cmd
output=!cmd args执行cmd 并赋值
%bookmark使用 IPython 的目录书签系统
%cd direcrory切换工作目录
%pwd返回当前工作目录(字符串形式)
%env返回当前系统变量(以字典形式)



对魔术命令不熟悉的话可以通过 %magic 查看详细文档;对某一个命令不熟悉的话,可以通过 %cmd? 内省机制查看特定文档。值得一提的是,IPython 中使用 del 命令无法删除所有的变量引用,因此垃圾回收机制也无法启用,所以有些时候你会需要使用 %xdel 或者 %reset。 

历史输入和输出变量

与标准 Shell 类似,IPython 中也可以通过 _ 和 __ 访问上一次和上上一次的输出。同时你肯定注意到了,IPython 中每一次的输入输出都有序号。访问历史 X 行输出的方法为:_X;访问历史 X 行输入的方法为:_iX。因为访问历史输出的使用概率较历史输入大很多,所以访问历史输出仅使用下划线加行号即可,同时为了区分,访问历史输入时需添加小写字母 “i”,代表 “in”。


In [24]:1+1
Out[24]:2In [25]:_i24
Out[25]:'1+1'In [26]:_24
Out[26]:2


Notebook


Notebook 的官方信息可以从 ipython.org/notebook 获得,不过好像被墙了。上不去的话也可以访问它的 github 页面,ipython/examples/Notebook 目录下有很多可供参考的内容。前面说过 Notebook 有一种 .ipynb 的文件格式,当你打开这个例程目录下的某个文件后,就能体会到 Notebook 的奇妙之处了。 

演示文档

目前在各种 Python 研讨会上,一种流行的演示手段就是使用 IPython Notebook,然后再将 .ipynb 文件发布到网上以供所有人查阅。除了前面说过的可以内嵌 matplotlib 绘图外,Notebook 还同时提供了对 LaTex 和 MarkDown 的支持!

在此输入图片描述

如上图便展示了一个 .ipynb 文件的示例页面。其中一对 In Out 会话被视作一个单元,称为 cell。第一个 cell 里我写入的内容其实是:

##LaTex 演示
---
$Z=\frac{X-\bar{X}}{S}$

分别使用了 MarkDown 和 LaTex 的语法。按下 Shift + Enter 后这段内容就被渲染成了图片中的样子。

cell 特别亲切的地方在于:它可以作为一个类似“段落”的概念来进行编辑,不管是执行前还是执行后,而且既可以针对内容进行编辑,也可以对 cell 整体应用 copy、paste、cut 等操作,甚至还可以前后移动 cell 的位置。这带来的好处是,在大量试验性的交互操作过后,他不会像普通 shell 那样留下无数没用的 IO 内容。如果某条命令的输出不理想或者报了错,你就可以回头编辑后重新运行,或把它移位或干脆删掉。这样在很久的一段交互过程后,Notebook 留下的反而是一份干净整洁的文档。

.ipynb 文件使用的是一种类 JSON 的文本格式,就像这样:

"worksheets": [{"cells": [{"cell_type": "markdown","metadata": {},"source": ["##LaTex \u6f14\u793a\n","---\n","$Z=\\frac{X-\\bar{X}}{S}$"]},

这种交互式计算环境,对绘图、数学公式、简易排版语法的支持,还有一种方便的文档格式,共同帮助 Notebook 成为了 Python 科学计算的理想工具。另外这种使用浏览器和服务进程的 C/S 结构还暗含了一种远程连接可能,抛开安全性不谈的话,其在教学方面也有很高的潜力。 

操作指南

当通过 IPython Notebook.exe 进入应用时,首先打开的是 Home 页面,地址一般为:http://127.0.0.1:8888/tree。Home 目录下会列出所有的历史文件记录,右上角则有一个 “New Notebook” 按钮可以新建一个会话。

在 .ipynb 文件的交互页面,需要注意的除了标准的 IPython 语法外,就是页面抬头处的菜单栏和工具栏了。Notebook 很贴心地提供了非常友好的帮助页面,因此本文不再赘述。基本看完这两个页面(内容很少)后就能对 Notebook 的操作方式了解的差不多。

在此输入图片描述

这篇关于ipyhon 与 ipython notebook的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030972

相关文章

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【Jupyter Notebook】汉化

1.打开:Anaconda Prompt 2.输入:"activate Zhui01"(注意:Zhui01是刚创建的环境名字) activate Zhui01 3.输入:"pip install jupyterlab-language-pack-zh-CN" pip install jupyterlab-language-pack-zh-CN 4.打开:Jupyter Noteb

[轻笔记] jupyter notebook 指定conda虚拟环境

安装插件 conda install nb_conda 进入conda env conda activate ${env_name}conda install ipykernelconda deactivate #3. 运行jupyter notebook conda activate # 需要先进入conda环境,非常重要jupyter notebook 会发现,在ju

jupyter notebook - python23 并存使用

在终端输入 $python2 -m pip install ipykernel$python2 -m ipykernel install --user$python3 -m pip install ipykernel$python3 -m ipykernel install --user ---------------------- Kernels for Python 2 and 3

【Jupyter】 Notebook 中的 IPython 魔法:12个必知实用技巧

Jupyter Notebook 作为一个强大的交互式计算环境,结合 IPython 的功能,为数据科学家和程序员提供了丰富的工具。本文将介绍12个在 Jupyter Notebook 中使用 IPython 的实用技巧 1. 清除输出:使用 clear_output() from IPython.display import clear_output# 执行一些操作print("This

【Anaconda】修改jupyter notebook默认打开的工作目录、jupyter notebook快捷键

jupyter notebook快捷键 针对单元格的颜色蓝色命令行模式绿色编辑模式两种模式的切换编辑模式切换到命令行模式 >>> esc键命令行模式切换到编辑模式 >>> 鼠标左键或者直接按enter键1.标题的书写方式1:1.esc进入命令行模式2.按m键3.写内容4.运行单元格即可方式2:1.编辑模式下直接写文本内容2.按esc键进入命令行模式3.再按数字键选择几级标题4.运行单元格即可

[转载]如何向IPython Notebook中导入.py文件

相关文章链接 如何向IPython Notebook中导入.py文件 如何将 ipynb 发布到 blog 中(html, markdown格式) Introducing IPython Notebook Beginner’s IPython Notebook Tutorial Example notebook showing how to do statistics

[转载]jupyter notebook中创建tensorflow的kernel

我在conda下创建了tensorflow的env,然而在jupyter notebook中却无法选择此kernel,历经google多方搜索,解决方法如下。 首先在conda下激活env activate tensorflowenv 然后安装ipykernel pip install ipykernel 最后将此kernel链接到jupyter notebook中 pyt

jupter_notebook简单介绍以及安装使用

目录 jupyter简单介绍: Jupyter: Jupyter的主要特点包括: 1. 交互式编程: 2. 文档和代码的整合: 3. 易于分享和协作: 4. 丰富的扩展性: 5. 社区支持: 6. 支持多种内核: 7. 集成开发环境(IDE)特性: 8. 版本控制: jupyter notebook的打开: 安装jupyter 无法安装 jupyter与pycha