当前位置: 首页 > news >正文

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:加载扩展模块,例如 sqlautoreload

示例:

%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 环境中&#xff0c;“魔法命令”&#xff08;Magic Commands&#xff09;是一些以百分号&#xff08;%&#xff09;或惊叹号&#xff08;!)开头的特殊命令&#xff0c;用于执行一些与代码运行环境相关的操作&#xff0c;而不仅仅是执行普通的 P…...

Zookeeper入门部署(单点与集群)

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

Kafa分区策略实现

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

Pyside/Pyqt中QWebEngineView和QWebEnginePage的区别

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

Kafka的内部通信协议

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

强大到工业层面的软件

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

数据分析和AI丨应对AI实施挑战,工程领域AI应用的五大方法

工程领域的人工智能 &#xff08;AI&#xff09; 已经开始发挥价值&#xff0c;低代码和无代码工具正在使曾经仅属于专业数据科学家的 AI 能力变得大众化。 然而&#xff0c;并非工程领域的每个人都能从中受益&#xff0c;使用新的便捷的 AI 工具提高工作效率并不难&#xff0c…...

54. UDP协议

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

AJAX笔记入门篇

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

深入解析Java集合框架:春招面试要点

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

【Elasticsearch】Elasticsearch的查询

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

STM32 PWM驱动直流电机

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

系统思考—心智模式

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

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)

定义 定义一系列算法&#xff0c;把它们一个个封装起来&#xff0c;并且使他们可互相替换&#xff08;变化&#xff09;。该模式使算法可独立于使用它的客户程序&#xff08;稳定&#xff09;而变化&#xff08;拓展&#xff0c;子类化&#xff09;。 动机&#xff08;Motiva…...

Python里的小整数问题挺有意思的

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

开源智慧园区管理系统对比五款主流产品探索智能运营新模式

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

正则表达式入门

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

OpenClaw+Qwen3.5-4B-Claude:个人知识库自动更新系统

OpenClawQwen3.5-4B-Claude&#xff1a;个人知识库自动更新系统 1. 为什么需要自动化知识管理 作为一个技术从业者&#xff0c;我每天都会接触到大量信息——技术博客、论文摘要、行业动态、代码库更新等等。过去三年里&#xff0c;我尝试过各种笔记工具和知识管理方法&#…...

APScheduler避坑指南:解决定时任务重复执行和时区问题的5种实战方案

APScheduler生产级实战&#xff1a;彻底解决定时任务重复执行与时区混乱的终极方案 凌晨三点&#xff0c;服务器告警铃声突然响起——监控系统显示同一批数据处理任务在短时间内被重复执行了17次。这不是科幻场景&#xff0c;而是某电商平台在使用APScheduler时遇到的真实生产事…...

不用Arduino IDE也能烧录ESP32-CAM?试试这个更简单的工具

告别Arduino IDE&#xff1a;5种高效烧录ESP32-CAM的替代方案 当开发者第一次接触ESP32-CAM时&#xff0c;Arduino IDE往往是默认的烧录工具。但随着时间的推移&#xff0c;许多用户会发现这个"官方推荐"的环境存在诸多限制&#xff1a;臃肿的安装包、缓慢的编译速度…...

我花了 3 小时吃透:Spring AI 核心三剑客 ChatModel、Prompt、ChatResponse 到底怎么用?

你在学习 Spring AI 的时候&#xff0c;肯定遇到过这三个类&#xff1a;ChatModel、Prompt、ChatResponse看着眼熟&#xff0c;却总搞不清谁负责干嘛、代码里为啥要这么写&#xff1f;接下来就是我的理解。一、先搞懂&#xff1a;这三个东西是什么关系&#xff1f;在开始写代码…...

CasRel开源镜像部署教程:适配低显存(12GB)GPU的轻量级方案

CasRel开源镜像部署教程&#xff1a;适配低显存&#xff08;12GB&#xff09;GPU的轻量级方案 1. 前言&#xff1a;为什么选择这个方案 如果你正在处理文本数据&#xff0c;想要自动提取人物、地点、事件之间的关系&#xff0c;那么关系抽取技术就是你需要的工具。CasRel作为…...

BiliRoamingX集成开发:Android 14兼容性优化与高级模块注入技术解析

BiliRoamingX集成开发&#xff1a;Android 14兼容性优化与高级模块注入技术解析 【免费下载链接】BiliRoamingX-integrations BiliRoamingX integrations powered by revanced. 项目地址: https://gitcode.com/gh_mirrors/bi/BiliRoamingX-integrations BiliRoamingX作为…...

STM32 GPIO模式实战:开漏输出与推挽输出的5个常见应用场景解析

STM32 GPIO模式实战&#xff1a;开漏输出与推挽输出的5个常见应用场景解析 在嵌入式开发中&#xff0c;GPIO&#xff08;通用输入输出&#xff09;是最基础也是最常用的外设之一。STM32系列微控制器提供了多种GPIO模式&#xff0c;其中开漏输出&#xff08;Open-Drain&#xff…...

【实战解析】PVE无显卡启动后网络失联:从硬件自检到系统绑定的完整排障指南

1. 无显卡启动的硬件准备与BIOS调试 当你准备在Proxmox VE&#xff08;PVE&#xff09;环境下实现无显卡启动时&#xff0c;首先要确保硬件层面支持这个特性。我遇到过不少用户直接拔掉显卡就期待系统能正常启动&#xff0c;结果发现连最基本的网络连接都失效了。这其实是个典型…...

ARM Neon加速NTT实战:如何在Cortex-A72上优化Kyber和Saber的加密性能

ARM Neon加速NTT实战&#xff1a;Cortex-A72上的Kyber与Saber性能优化 在移动安全领域&#xff0c;后量子密码算法的硬件加速已成为行业焦点。Cortex-A72作为ARM中端处理器的代表&#xff0c;其Neon指令集为NTT&#xff08;数论变换&#xff09;提供了显著的并行计算能力。本文…...

24/7运行指南:OpenClaw+GLM-4-7-Flash树莓派部署与看门狗配置

24/7运行指南&#xff1a;OpenClawGLM-4-7-Flash树莓派部署与看门狗配置 1. 为什么选择树莓派作为OpenClaw的宿主设备&#xff1f; 去年冬天&#xff0c;当我第一次尝试让OpenClaw在我的主力开发机上24小时运行时&#xff0c;遭遇了严重的资源冲突问题。半夜运行的自动化任务…...