1.1 shell还是Notebook

Jupyter Notebook 是 IPython shell 基于浏览器的图形界面,提供了一系列丰富的动态展示功能。Jupyter Notebook 不仅可以执行 Python/IPython 语句,还允许用户添加格式化文本、静态和动态的可视化图像、数学公式、JavaScript 插件,等等。不仅如此,这些 Notebook 文档还能以共享方式存储,以便其他人可以打开这些 Notebook,并且在他们自己的系统中执行这些 Notebook 代码。

  1. > jupyter notebook

1.2 IPython的帮助和文档

符号 ? 用于浏览文档,符号 ?? 用于浏览源代码,而 Tab 键可以用于自动补全。

每一个 Python 对象都有一个字符串的引用,该字符串即 docstring。大多数情况下,该字符串包含对象的简要介绍和使用方法。

  1. help(len)
  2. Help on built-in function len in module builtins:
  3.  
  4. len(obj, /)
  5. Return the number of items in a container.
  1. len?
  2. Signature: len(obj, /)
  3. Docstring: Return the number of items in a container.
  4. Type: builtin_function_or_method

这种方法也适用于你自己创建的函数或者其他对象!

  1. def square(a):
  2. """Return the square of a."""
  3. return a ** 2
  4.  
  5. square?
  6. Signature: square(a)
  7. Docstring: Return the square of a.
  8. Type: function
  1. square??
  2. Signature: square(a)
  3. Source:
  4. def square(a):
  5. """Return the square of a."""
  6. return a ** 2
  7. Type: function

有时 ?? 不能显示源代码。这是因为该对象并不是用 Python 实现的,而是用 C 语言或其他编译扩展语言实现的。在这种情况下,?? 后缀将等同于 ? 后缀。

使用TAB补全对象或命令。

使用TAB可以查看系统中可导入的包或者包中可导入的对象。

使用*进行通配符匹配。

  1. str.*find*?
  2. str.find
  3. str.rfind
  4.  
  5. *Warning?
  6. BytesWarning
  7. DeprecationWarning
  8. FutureWarning
  9. ImportWarning
  10. PendingDeprecationWarning
  11. ResourceWarning
  12. RuntimeWarning
  13. SyntaxWarning
  14. UnicodeWarning
  15. UserWarning
  16. Warning

1.3 快捷键

用上下方向键查找历史,如果输入 def 然后按下上方向键,则会在命令历史中找到以 def 开头的最近的命令(如果有的话)。

  • Ctrl + a 将光标移到本行的开始处
  • Ctrl + e 将光标移到本行的结尾处
  • Ctrl + l 清除终端屏幕的内容
  • Ctrl + c 中断正在执行的 Python 命令
  • Ctrl + d 退出当前 IPython 会话

1.4 IPython魔法命令

魔法命令有两种形式:行魔法(line magic)和单元魔法(cell magic)。行魔法以单个 % 字符作为前缀,作用于单行输入;单元魔法以两个 %% 作为前缀,作用于多行输入。

  • %paste:将剪切板中的代码完整粘贴并且自动执行代码输入结果。
  1. %paste
  2. def f(x, y, z):
  3. return (x+y)/z
  4. a = 5
  5. b = 6
  6. c = 7
  7. result = f(a, b, c)
  8. print(result)
  9.  
  10. ## -- End pasted text --
  11. 1.5714285714285714
  • %cpaste也是粘贴文本的,可以粘贴任何一条代码,在输入结束命令之前都不会执行代码,输入‘--’按回车或者使用‘Ctrl-D’停止粘贴代码,停止粘贴代码后会执行代码。
  • %run myscript.py:执行脚本内容,或者使用runfile命令。
  1. #-------------------------------------
  2. # file: myscript.py
  3. def square(x):
  4. """求平方"""
  5. return x ** 2
  6. for N in range(1, 4):
  7. print(N, "squared is", square(N))

  • %timeit:计算一行Python语句执行的时间。
  1. %timeit L = [n ** 2 for n in range(1000)]
  2. 416 µs ± 58.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
  • 对于多行语句,可以加入第二个 % 符号将其转变成单元魔法,以处理多行输入。
  • %reset:指删除interactive命名空间中全部的变量名。

  • %xdel variable:删除单个变量的引用。

  • %magic:获取可用魔法函数的通用描述以及一些示例。
  • %lsmagic:获取所有魔法函数的列表。

1.5 输入和输出历史

In[1]:/Out[1]:给出了在当前会话中如何获取输入和输出历史的线索。
In 对象是一个列表,按照顺序记录所有的命令(列表中的第一项是一个占位符,以便 In[1] 可以表示第一条命令)。
Out 对象不是一个列表,而是一个字典。它将输入数字映射到相应的输出(如果有的话)。
任何返回值是 None 的命令都不会加到 Out 变量中。

变量 _(单下划线)用于更新以前的输出,双下划线获得倒数第二个历史输出,三下划线获得倒数第三个历史输出,仅止于此。

Out[X]的简写是_X。

要禁止一个命令的输出,最简单的方式就是在行末尾处添加一个分号。

使用%history魔法命令输出历史记录。

1.6 IPython和shell命令

使用 ! 符号作为前缀在 IPython 中执行任何shell命令行命令。

shell 命令不仅可以从 IPython 中调用,还可以和 IPython 命名空间进行交互。通过一个赋值操纵符可以将任何 shell 命令的输出保存到 Python 中。

需要注意的是这些结果并不以列表的形式返回,而是以 IPython 中定义的一个特殊 shell 返回类型的形式返回。这看上去和 Python 列表很像,并且可以像列表一样操作。但是这种类型还有其他功能,例如 grep 和 fields 方法以及 s、n 和 p 属性,允许我们轻松地搜索、过滤和显示结果。

1.7 与shell相关的魔法命令

自动魔法(automagic)函数:%cd、%cat、%cp、%env、%ls、%man、%mkdir、%more、%mv、%pwd、%rm 和 %rmdir。如果 automagic 被打开,以上任何一个魔法命令都可以省略 % 符号,这使得 IPython 提示符可以被当做当作普通 shell 一样使用。

1.8 错误和调试

改变错误打印信息:

  • %xmode Context:普通(默认)。
  • %xmode Plain:更加紧凑。
  • %xmode Verbose:加入了一些额外的信息,包括任何被调用的函数的参数。

使用%debug开启调试模式。

使用%pbd函数在发生错误时自动打开调试界面。

使用%run -d交互式地运行脚本。

1.9 代码的分析和计时

  • %time:对单个语句的执行时间进行计时。
  • %timeit:对单个语句的重复执行进行计时,以获得更高的准确度。

有时候重复一个操作并不是最佳选择。例如,如果有一个列表需要排序,我们可能会被重复操作误导。对一个预先排好序的列表进行排序,比对一个无序的列表进行排序要快,所以重复运行将使结果出现偏差,对于这种情况,%time 魔法函数可能是更好的选择。

  • %prun:利用分析器运行代码。
  • %lprun:利用逐行分析器运行代码。
  • %memit:测量单个语句的内存使用。
  • %mprun:通过逐行的内存分析器运行代码。

Python数据科学手册(1) IPython:超越Python的更多相关文章

  1. 《Python数据科学手册》

    <Python数据科学手册>[美]Jake VanderPlas著 陶俊杰译 Absorb what is useful, discard what is not, and  add wh ...

  2. Python数据科学手册-前言

    读Python数据科学手册 笔记 系列 数据科学 data science https://img2022.cnblogs.com/blog/2827305/202205/2827305-202205 ...

  3. Python数据科学手册

    Python数据科学手册(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1KurSdjNWiwMac3o3iLrzBg 提取码:qogy 复制这段内容后打开百度网盘手 ...

  4. 100天搞定机器学习|day45-53 推荐一本豆瓣评分9.3的书:《Python数据科学手册》

    <Python数据科学手册>共五章,每章介绍一到两个Python数据科学中的重点工具包.首先从IPython和Jupyter开始,它们提供了数据科学家需要的计算环境:第2章讲解能提供nda ...

  5. Matplotlib 使用 - 《Python 数据科学手册》学习笔记

    一.引入 import matplotlib as mpl import matplotlib.pyplot as plt 二.配置 1.画图接口 Matplotlib 有两种画图接口: (1)一个是 ...

  6. 《Python数据科学手册》第五章机器学习的笔记

    目录 <Python数据科学手册>第五章机器学习的笔记 0. 写在前面 1. 判定系数 2. 朴素贝叶斯 3. 自举重采样方法 4. 白化 5. 机器学习章节总结 <Python数据 ...

  7. Python数据科学手册Seaborn马拉松可视化里时分秒转化为秒数的问题

    Python数据科学手册Seaborn马拉松可视化里时分秒转化为秒数的问题 问题描述: 我实在是太懒了,问题描述抄的网上的哈哈哈:https://www.jianshu.com/p/6ab7afa05 ...

  8. 学习《Python数据科学手册》高清中文PDF+高清英文PDF+代码

    如果有一定的数据分析与机器学习理论与实践基础,<Python数据科学手册>这本书是绝佳选择. 是对以数据深度需求为中心的科学.研究以及针对计算和统计方法的参考书.很友好实用,结构很清晰.但 ...

  9. python书籍推荐:Python数据科学手册

    所属网站分类: 资源下载 > python电子书 作者:today 链接:http://www.pythonheidong.com/blog/article/448/ 来源:python黑洞网 ...

  10. Python数据科学手册(2) NumPy入门

    NumPy(Numerical Python 的简称)提供了高效存储和操作密集数据缓存的接口.在某些方面,NumPy 数组与 Python 内置的列表类型非常相似.但是随着数组在维度上变大,NumPy ...

随机推荐

  1. Zookeeper开源客户端框架Curator的使用

    CuratorFramework Curator框架提供了一套高级的API, 简化了ZooKeeper的操作. 话不多说,看代码 package com.donews.data.util import ...

  2. OSI体系结构(七层)

    OSI体系结构,意为开放式系统互联.国际标准组织(国际标准化组织)制定了OSI模型.这个模型把网络通信的工作分为7层,分别是物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 1至4层被认为 ...

  3. 牛客-DongDong数颜色 及其相似题

    大佬博客 ps:在牛客上做到这题不会,学会之后补了两道相关题.顺便记录一下. 牛客-DongDong数颜色 sol:dfs序+莫队,先把树上的点标上dfs序,因为子树的dfs序是连续的,所以子树可以表 ...

  4. CSA|EI

    信息检索 CSA是学科特色的包含相关学科的内容,其网址是https://search.proquest.com/ 可以使用命令行检索: 分类的限制检索: 寻找检索线索可使用百科全书 EI是工程领域最全 ...

  5. miracle|

    N-COUNT 奇迹;出人意料的事If you say that a good event is a miracle, you mean that it is very surprising and ...

  6. IO流文件拷贝

    目录 IO流文件拷贝 前言 字节流(使用FileInputStream和FileOutputStream读取每一个字节...) 字节流(使用FileInputStream和FileOutputStre ...

  7. C#获取代码执行时间(精确到毫秒)

    private void Time(int i) { Stopwatch sw = new Stopwatch(); sw.Start(); Thread.Sleep(i); sw.Stop(); C ...

  8. 18.09.22模拟赛T2 历史

    网上基本上找不到这道题,何况LJJ还稍微改了一下...... 原题:传送门 题目描述 ljj 被S 国数不清的漂亮小姐姐所吸引,为了搞清楚为什么S 国有如此多的漂亮小姐姐,他决定研究S 国的历史. 根 ...

  9. JavaScript值类型和引用类型有哪些

    JavaScript值类型和引用类型有哪些 (1)值类型:数值.布尔值.null.undefined. (2)引用类型:对象.数组.函数.

  10. 涉嫌垄断的App Store,到底做了什么让开发者暴怒

    ​ Store,到底做了什么让开发者暴怒" title="涉嫌垄断的App Store,到底做了什么让开发者暴怒"> ​什么行业最赚钱?不是你想象中的餐饮.互联网. ...