ML基础-Jupyter notebook中的魔法命令
在 Jupyter Notebook 或 IPython 环境中,“魔法命令”(Magic Commands)是一些以百分号(%
)或惊叹号(!
)开头的特殊命令,用于执行一些与代码运行环境相关的操作,而不仅仅是执行普通的 Python 代码。魔法命令可以大大增强 Jupyter Notebook 的功能和用户体验。
用过colab的人应该很熟悉了。
1. %
开头的魔法命令
%
开头的魔法命令分为两类:行魔法命令(Line Magic)和单元魔法命令(Cell Magic)。行魔法命令以单 %
开头,作用于单行代码;单元魔法命令以双 %%
开头,作用于整个代码单元。
1.1 常见 %
魔法命令
命令 | 描述 | 示例 |
---|---|---|
%time | 测量单行代码的执行时间 | %time result = some_function() |
%timeit | 多次运行单行代码以获取更准确的执行时间 | %timeit result = some_function() |
%run | 运行外部 Python 脚本 | %run myscript.py |
%pwd | 显示当前工作目录 | %pwd |
%ls | 列出当前目录下的文件和文件夹 | %ls |
%cd | 更改当前工作目录 | %cd /path/to/directory |
%who | 列出当前命名空间中的变量 | %who |
%whos | 显示变量的详细信息 | %whos |
%reset | 清除当前命名空间中的所有变量 | %reset |
%history | 显示命令历史 | %history |
%lsmagic | 列出所有可用的魔法命令 | %lsmagic |
%config | 查看或修改配置 | %config InlineBackend.figure_format = "retina" |
%debug | 进入交互式调试模式 | %debug |
%store | 保存变量到磁盘,可在后续会话中恢复 | %store variable |
%store -r | 从磁盘恢复保存的变量 | %store -r variable |
%psource | 显示对象的源代码 | %psource my_function |
1.2 常见 %%
魔法命令
命令 | 描述 | 示例 |
---|---|---|
%%time | 测量整个代码单元的执行时间 | %%time result = some_function() print(result) |
%%writefile | 将代码单元的内容写入文件 | %%writefile myfile.py def hello(): print("Hello, world!") |
%%capture | 捕获代码单元的输出 | %%capture print("This output will be captured.") |
%%bash | 执行 Bash 命令 | %%bash echo "Hello from Bash!" ls |
%%html | 渲染 HTML 代码 | %%html <h1>Hello, world!</h1> |
2. !
开头的魔法命令
!
开头的命令用于在 Jupyter Notebook 中执行系统命令,类似于在终端中运行命令。
2.1 常见 !
命令
命令 | 描述 | 示例 |
---|---|---|
!ls | 列出当前目录下的文件和文件夹 | !ls |
!pwd | 显示当前工作目录 | !pwd |
!cd | 更改当前工作目录(注意:!cd 不会改变 Jupyter 的工作目录,仅对当前单元有效) | !cd /path/to/directory |
!mkdir | 创建新目录 | !mkdir new_folder |
!rm | 删除文件 | !rm file.txt |
!rmdir | 删除空目录 | !rmdir folder |
!pip install | 安装 Python 包 | !pip install package_name |
!echo | 打印文本 | !echo "Hello, world!" |
3. 使用示例
3.1 %
魔法命令示例
# 测量单行代码的执行时间
%time result = [i for i in range(1000000)]# 列出当前目录下的文件
%ls# 显示当前工作目录
%pwd# 清除所有变量
%reset# 显示变量详细信息
%whos
3.2 %%
魔法命令示例
# 测量整个代码单元的执行时间
%%time
import time
time.sleep(2)
print("Done!")# 将代码写入文件
%%writefile example.py
def greet(name):print(f"Hello, {name}!")
3.3 !
命令示例
# 列出当前目录下的文件
!ls# 创建新目录
!mkdir test_folder# 安装 Python 包
!pip install numpy
4. 总结
%
开头的魔法命令用于执行单行操作或配置环境。%%
开头的魔法命令用于对整个代码单元进行操作。!
开头的命令用于执行系统命令,类似于在终端中运行命令。 这些魔法命令能够显著提升 Jupyter Notebook 的使用效率,帮助用户更便捷地进行数据分析和代码调试。
除了前面提到的 %
和 !
开头的魔法命令之外,Jupyter Notebook 和 IPython 还提供了许多其他有用的魔法命令,这些命令可以帮助用户更高效地进行数据分析、代码调试和环境管理。
以下是一些补充的魔法命令及其使用示例。
补充的魔法命令
1. %matplotlib:绘图相关
%matplotlib inline
:将 Matplotlib 图形嵌入到 Notebook 中。%matplotlib notebook
:生成可交互的图形,支持缩放和移动。%config InlineBackend.figure_format = "retina"
:提高图形的分辨率。
示例:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
plt.plot(x, np.sin(x))
plt.show()
2. %pdb:调试相关
%pdb
:开启或关闭自动调试模式。当代码中出现异常时,会自动进入调试模式。%debug
:进入交互式调试模式,用于调试当前代码。
示例:
%pdb on # 开启自动调试模式
def divide(a, b):return a / bresult = divide(10, 0) # 这里会触发异常并进入调试模式
3. `%load:代码加载
%load
:将外部文件的内容加载到当前代码单元中。%load_ext
:加载扩展模块,例如sql
或autoreload
。
示例:
%load myscript.py # 将 myscript.py 的内容加载到当前单元
4. %autoreload:自动重新加载模块
%load_ext autoreload
:加载自动重新加载扩展。%autoreload 2
:自动重新加载所有模块,每次调用函数时都会重新加载模块。
示例:
%load_ext autoreload
%autoreload 2import mymodule
mymodule.some_function() # 如果 mymodule.py 被修改,会自动重新加载
5. %who:变量管理
%who
:列出当前命名空间中的变量。%whos
:列出当前命名空间中的变量及其详细信息。%reset
:清除当前命名空间中的所有变量。%store
:保存变量到磁盘,可在后续会话中恢复。%store -r
:从磁盘恢复保存的变量。
示例:
a = 10
b = "Hello"
%who # 列出变量
%whos # 列出变量及其详细信息
%reset # 清除所有变量
6. %history:命令历史
%history
:显示命令历史。%history -f filename.py
:将命令历史保存到文件。
示例:
%history # 显示命令历史
%history -f my_history.py # 将命令历史保存到文件
7. %lsmagic:列出所有魔法命令
%lsmagic
:列出所有可用的魔法命令。
示例:
%lsmagic
8. %config:配置
%config
:查看或修改配置。
示例:
%config InlineBackend.figure_format = "retina" # 设置图形格式为 Retina
9. %paste:粘贴代码
%paste
:将剪贴板中的代码粘贴到当前代码单元中。
示例:
%paste # 粘贴剪贴板中的代码
10. %run:运行脚本
%run
:运行外部 Python 脚本。
示例:
%run myscript.py # 运行 myscript.py 脚本
11. %psource:显示源代码
%psource
:显示对象的源代码。
示例:
def my_function():print("Hello, world!")%psource my_function # 显示 my_function 的源代码
12. %timeit:性能分析
%timeit
:多次运行代码以获取更准确的执行时间。%%timeit
:多次运行整个代码单元以获取更准确的执行时间。
示例:
%timeit [i for i in range(1000)] # 测量单行代码的执行时间
%%timeit
result = [i for i in range(1000)] # 测量整个代码单元的执行时间
13. %capture:捕获输出
%%capture
:捕获代码单元的输出,可以将输出保存到变量中。
示例:
%%capture captured_output
print("This output will be captured.")
print("Another line.")
print(captured_output) # 打印捕获的输出
14. %env:环境变量
%env
:设置或查看环境变量。
示例:
%env MY_VAR=123 # 设置环境变量
%env MY_VAR # 查看环境变量
15. %alias:命令别名
%alias
:为系统命令创建别名。
示例:
%alias ll ls -l # 创建别名 ll,等同于 ls -l
!ll
总结
Jupyter Notebook 和 IPython 提供了丰富的魔法命令,这些命令可以帮助用户更高效地进行数据分析、代码调试和环境管理。通过合理使用这些魔法命令,可以显著提升开发效率和用户体验。
相关文章:

ML基础-Jupyter notebook中的魔法命令
在 Jupyter Notebook 或 IPython 环境中,“魔法命令”(Magic Commands)是一些以百分号(%)或惊叹号(!)开头的特殊命令,用于执行一些与代码运行环境相关的操作,而不仅仅是执行普通的 P…...

Zookeeper入门部署(单点与集群)
本篇文章基于docker方式部署zookeeper集群,请先安装docker 目录 1. docker初期准备 2.启动zookeeper 2.1 单点部署 2.2 集群部署 3. Linux脚本实现快速切换启动关闭 1. docker初期准备 拉取zookeeper镜像 docker pull zookeeper:3.5.6 如果拉取时间过长…...

Kafa分区策略实现
引言 Kafka 的分区策略决定了生产者发送的消息会被分配到哪个分区中,合理的分区策略有助于实现负载均衡、提高消息处理效率以及满足特定的业务需求。 轮询策略(默认) 轮询策略是 Kafka 默认的分区策略(当消息没有指定键时&…...

Pyside/Pyqt中QWebEngineView和QWebEnginePage的区别
在 PySide/Qt 的 WebEngine 模块中,QWebEngineView 和 QWebEnginePage 是两个紧密相关但职责不同的类。以下是它们的核心区别和关系: 1. 职责区分 类名核心职责模块归属QWebEngineView作为可视化的窗口部件(Widget),负…...

Kafka的内部通信协议
引言 kafka内部用到的常见协议和优缺点可以看看原文 Kafka用到的协议 本文奖详细探究kafka核心通信协议和高性能的关键 网络层通信的实现 基于 Java NIO:Kafka 的网络通信层主要基于 Java NIO 来实现,这使得它能够高效地处理大量的连接和数据传输。…...

强大到工业层面的软件
电脑数据删不干净,简直是一种让人抓狂的折磨!明明已经把文件扔进了回收站,清空了,可那些残留的数据就像牛皮癣一样,怎么也除不掉。这种烦恼简直无处不在,让人从头到脚都感到无比烦躁。 首先,心…...

数据分析和AI丨应对AI实施挑战,工程领域AI应用的五大方法
工程领域的人工智能 (AI) 已经开始发挥价值,低代码和无代码工具正在使曾经仅属于专业数据科学家的 AI 能力变得大众化。 然而,并非工程领域的每个人都能从中受益,使用新的便捷的 AI 工具提高工作效率并不难,…...

54. UDP协议
UDP协议 UDP(User Datagram Protocol,用户数据报协议)是一个无连接的传输层协议,它提供简单的、不可靠的信息传送服务。与TCP(传输控制协议)不同,UDP不提供数据包的排序、错误检查(仅…...

AJAX笔记入门篇
黑马程序员视频地址: 黑马程序员前端AJAX入门到实战全套教程https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p2https://www.bilibili.com/video/BV1MN411y7pw?vd_source…...

深入解析Java集合框架:春招面试要点
在上一篇文章中,我们深入探讨了Java核心基础,这是学习Java的基石。而在实际的Java开发中,集合框架的使用频率极高,它为我们提供了丰富的数据结构和算法实现,极大地提高了开发效率。对于春招面试来说,集合框…...

【Elasticsearch】Elasticsearch的查询
Elasticsearch的查询 DSL查询基础语句叶子查询全文检索查询matchmulti_match 精确查询termrange 复合查询算分函数查询bool查询 排序分页基础分页深度分页 高亮高亮原理实现高亮 RestClient查询基础查询叶子查询复合查询排序和分页高亮 数据聚合DSL实现聚合Bucket聚合带条件聚合…...

STM32 PWM驱动直流电机
接线图: 代码配置: 根据驱动舵机的代码来写,与舵机不同的是,这次的引脚接到了PA2上,所以需要改一下引脚以及改为OC3通道。 另外还需在配置两个GPIO引脚,来控制电机的旋转方向,这里连接到了PA4与…...

系统思考—心智模式
“我们的大脑对连贯性的渴望远胜于对准确性的追求。”—诺贝尔经济学得主丹尼尔卡尼曼 在面对复杂的决策时,我们往往更倾向于寻找那些能够迅速串联起来的信息,而非深入挖掘每一个细节的真实性。这种倾向在日常生活中或许能帮助我们迅速作出决策…...

JavaScript_02 表单
表单常用演示: 1.图片 结果失真了... 2.切换图片 切换结果 3.表单:...

【Qt】06-对话框
对话框 前言一、模态和非模态对话框1.1 概念1.2 模态对话框1.2.1 代码QAction类 1.2.2 模态对话框运行分析 1.3 非模态对话框1.3.1 代码局部变量和成员变量setAttribute 类 1.3.2 现象解释 二、标准对话框2.1 提示对话框 QMessageBox2.1.1 现象及解释 2.2 问题对话框2.2.1 现象…...

AI学习指南Ollama篇-使用Ollama构建自己的私有化知识库
一、引言 (一)背景介绍 随着企业对数据隐私和效率的重视,私有化知识库的需求日益增长。私有化知识库不仅可以保护企业数据的安全性,还能提供高效的知识管理和问答系统,提升企业内部的工作效率和创新能力。 (二)Ollama和AnythingLLM的结合 Ollama和AnythingLLM的结合…...

2.策略模式(Strategy)
定义 定义一系列算法,把它们一个个封装起来,并且使他们可互相替换(变化)。该模式使算法可独立于使用它的客户程序(稳定)而变化(拓展,子类化)。 动机(Motiva…...

Python里的小整数问题挺有意思的
简单来说,Python为了优化性能,会把一些常用的整数(通常是-5到256)提前创建好,放到一个“缓存池”里。这样,当你用到这些小整数时,Python就不用每次都重新创建对象了,直接从缓存池里拿…...

开源智慧园区管理系统对比五款主流产品探索智能运营新模式
内容概要 在这个数字化迅速发展的时代,园区管理也迎来了全新的机遇和挑战。众所周知,开源智慧园区管理系统作为一种创新解决方案,正逐步打破传统管理的局限性。它的开放性不仅使得系统可以根据具体需求进行灵活调整,也为用户提供…...

正则表达式入门
入门 1、提取文章中所有的英文单词 //1.先创建一个Pattern对象,模式对象,可以理解成就是一个正则表达式对象 Pattern pattern Pattern.compile("[a-zA-Z]"); //2.创建一个匹配器对象 //理解:就是 matcher匹配器按照p…...

hive:数据导入,数据导出,加载数据到Hive,复制表结构
hive不建议用insert,因为Hive是建立在Hadoop之上的数据仓库工具,主要用于批处理和大数据分析,而不是为OLTP(在线事务处理)操作设计的。INSERT操作会非常慢 数据导入 命令行界面:建一个文件 查询数据>>复制>>粘贴到新…...

【某大厂一面】HashSet底层怎么实现的
HashSet 是 Java 集合框架中的一个非常常用的集合类,它实现了 Set 接口,并且底层通常是通过 哈希表(HashMap)来实现的。要理解 HashSet 的底层实现,我们需要从哈希表的工作原理开始讲起。下面是对 HashSet 底层实现的详…...

动手学图神经网络(3):利用图神经网络进行节点分类 从理论到实践
利用图神经网络进行节点分类:从理论到实践 前言 在之前的学习中,大家对图神经网络有了初步的了解。本次教程将深入探讨如何运用图神经网络(GNNs)来解决节点分类问题。在节点分类任务里,大家往往仅掌握少量节点的真实标签,却要推断出其余所有节点的标签,这属于归纳式学…...

免杀国内主流杀软的恶意样本分析
目录下存在愤怒的小鸟.exe和fun.dll文件,最新版火绒,windows defender,腾讯电脑管家,360静态扫描都未发现恶意程序 动态执行,杀软也未拦截 上传到virustotal网站分析恶意程序,只有三个引擎检测出来 die分析…...

第4章 基于中点电流的NPC逆变器中点电压平衡策略
1. 工作原理 1.1 NPC型三电平逆变器工作原理 NPC型三相三电平逆变器有A、B、C三个桥臂,其组成结构是相同的,本章以A相为例,对其工作原理进行分析。开关器件SA1和SA3、SA2和SA4为互补器件,通过控制开关器件的导通和关断状态&#…...

消息队列篇--通信协议篇--应用层协议和传输层协议理解
在网络通信中,传输层协议和应用层协议是OSI模型中的两个不同层次的协议,它们各自承担着不同的职责。 下文中,我们以TCP/UDP(传输层协议)和HTTP/SMTP(应用层协议)为例进行详细解释。 1、传输层协…...

FLTK - FLTK1.4.1 - demo - animgifimage
文章目录 FLTK - FLTK1.4.1 - demo - animgifimage概述笔记END FLTK - FLTK1.4.1 - demo - animgifimage 概述 知识点: 注册图像文件类型判断回调 FLTK支持的图像格式 GIF, BMP, ICO, PNM, PNG, jpg, svg 事件回调的注册 GIF图像显示为图片或动画的标志设置 // 超时回调的设置…...

目前市场主流的AI PC对于大模型本地部署的支持情况分析-Deepseek
以下是目前市场主流AI PC对**大模型本地部署支持情况**的综合分析,结合硬件能力、软件生态及厂商动态进行总结: --- ### **一、硬件配置与算力支持** 1. **核心处理器架构** - **异构计算方案(CPUGPUNPU)**:主流…...

1.2 基于深度学习的底层视觉技术
文章目录 高层视觉任务与底层视觉任务深度神经网络相对于传统方法的优势 高层视觉任务与底层视觉任务 计算机视觉中的任务包含高层视觉任务,底层视觉任务。高层视觉任务是处理语义级别相关的任务,例如图像分类、目标检测、图像分割等。底层视觉任务处理与…...

HTML 标题
HTML 标题 引言 HTML(超文本标记语言)是构建网页的基础,而标题则是网页中不可或缺的元素。标题不仅能够帮助用户快速了解网页内容,还能够对搜索引擎优化(SEO)产生重要影响。本文将详细介绍HTML标题的用法…...