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 提供了丰富的魔法命令,这些命令可以帮助用户更高效地进行数据分析、代码调试和环境管理。通过合理使用这些魔法命令,可以显著提升开发效率和用户体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/68069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Unity2D 2022:UI】创建滚动视图

一、创建Scroll View游戏对象 在Canvas画布下新建Scroll View游戏对象 二、为Content游戏对象添加Grid Layout Group&#xff08;网格布局组&#xff09;组件 选中Content游戏物体&#xff0c;点击Add Competent添加组件&#xff0c;搜索Grid Layout Group组件 三、调整Grid La…

9-收纳的知识

[ComponentOf(typeof(xxx))]组件描述&#xff0c;表示是哪个实体的组件 [EntitySystemOf(typeof(xxx))] 系统描述 [Event(SceneType.Demo)] 定义事件&#xff0c;在指定场景的指定事件发生后触发 [ChildOf(typeof(ComputersComponent))] 标明是谁的子实体 [ResponseType(na…

数据库系统概念第六版记录 一

1.关系型数据库 关系型数据库&#xff08;Relational Database&#xff0c;简称 RDB&#xff09;是基于关系模型的一种数据库&#xff0c;它通过表格的形式来组织和存储数据。每个表由若干行&#xff08;记录&#xff09;和列&#xff08;字段&#xff09;组成&#xff0c;数据…

Vue前端开发-pinia之Actions插件

Store中的Actions部分&#xff0c;用于定义操作属性的方法&#xff0c;类似于组件中的methods部分&#xff0c;它与Getters都可以操作State属性&#xff0c;但在定义方法时&#xff0c;Getters是对State属性进行加工处理&#xff0c;再返回使用&#xff0c;属于内部计算;Action…

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (下)

今天小李哥将开启全新的技术分享系列&#xff0c;为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来生成式 AI 安全市场正迅速发展。据IDC预测&#xff0c;到2025年全球 AI 安全解决方案市场规模将突破200亿美元&#xff0c;年复合增长率超过30%&#xff0c;而Gartn…

一个开源 GenBI AI 本地代理(确保本地数据安全),使数据驱动型团队能够与其数据进行互动,生成文本到 SQL、图表、电子表格、报告和 BI

一、GenBI AI 代理介绍&#xff08;文末提供下载&#xff09; github地址&#xff1a;https://github.com/Canner/WrenAI 本文信息图片均来源于github作者主页 在 Wren AI&#xff0c;我们的使命是通过生成式商业智能 &#xff08;GenBI&#xff09; 使组织能够无缝访问数据&…

JAVA架构师进阶之路

JAVA架构师进阶之路 前言 苦于网络上充斥的各种java知识&#xff0c;多半是互相抄袭&#xff0c;导致很多后来者在学习java知识中味同嚼蜡&#xff0c;本人闲暇之余整理了进阶成为java架构师所必须掌握的核心知识点&#xff0c;后续会不断扩充。 废话少说&#xff0c;直接上正…

java程序员面试自身优缺点,详细说明

程序员面试大厂经常被问到的Java异常机制问题,你搞懂了吗运行时异常:运行时异常是可能被程序员避免的异常。与检查性相反,运行时异常可以在编译时被忽略。错误(ERROR):错误不是异常,而是脱离程序员控制的问题。错误通常在代码中容易被忽略。例如:当栈溢出时,一个错误就发生了,它…

C++六大默认成员函数

C六大默认成员函数 默认构造函数默认析构函数RAII技术RAII的核心思想优点示例应用场景 默认拷贝构造深拷贝和浅拷贝 默认拷贝赋值运算符移动构造函数&#xff08;C11起&#xff09;默认移动赋值运算符&#xff08;C11起&#xff09;取地址及const取地址操作符重载取地址操作符重…

防火墙的安全策略

1.VLAN 2属于办公区;VLAN 3属于生产区&#xff0c;创建时间段 [FW]ip address-set BG type object [FW-object-address-set-BG]address 192.168.1.0 mask 25 [FW]ip address-set SC type object [FW-object-address-set-SC]address 192.168.1.129 mask 25 [FW]ip address-se…

windows下搭建鸿蒙OS应用开发环境

一、前言 HUAWEI DevEco Studio 是华为推出的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;主要用于开发基于华为鸿蒙操作系统&#xff08;HarmonyOS&#xff09;的应用。作为华为开发者工具的核心之一&#xff0c;DevEco Studio 提供了一个多功能的开发平台&…

MacBook Pro(M1芯片)Qt环境配置

MacBook Pro&#xff08;M1芯片&#xff09;Qt环境配置 1、准备 试图写一个跨平台的桌面应用&#xff0c;此时想到了使用Qt&#xff0c;于是开始了搭建开发环境&#xff5e; 在M1芯片的电脑上安装&#xff0c;使用brew工具比较方便 Apple Silicon&#xff08;ARM/M1&#xf…

Sqlserver DBCC Check 遇到Msg 3853报错涉及sys.columns和sys.objects信息不匹配的解决方法

对数据库CacheDBMSIntl执行DBCC checkcatalog(‘CacheDBMSIntl’)时遇到报错如下 Msg 3853, Level 16, State 1, Line 7 Attribute (object_id1071830442) of row (object_id1071830442,column_id1) in sys.columns does not have a matching row (object_id1071830442) in sy…

VUE之组件通信(二)

1、v-model v-model的底层原理&#xff1a;是:value值和input事件的结合 $event到底是啥&#xff1f;啥时候能.target 对于原生事件&#xff0c;$event就是事件对象 &#xff0c;能.target对应自定义事件&#xff0c;$event就是触发事件时&#xff0c;所传递的数据&#xff…

P2036 [COCI 2008/2009 #2] PERKET(dfs)

#include<bits/stdc.h> using namespace std;int n; int a[15],b[15]; int ansINT_MAX; // 初始化最小差值为一个很大的数&#xff0c;保证能找到最小值void dfs(int i,int s,int k){if(in){ // 当遍历完所有元素时if(s1&&k0) return;int difabs(s-k);ans mi…

论文解读:《基于TinyML毫米波雷达的座舱检测、定位与分类》

摘要 本文提出了一种实时的座舱检测、定位和分类解决方案&#xff0c;采用毫米波&#xff08;mmWave&#xff09;雷达系统芯片&#xff08;SoC&#xff09;&#xff0c;CapterahCAL60S344-AE&#xff0c;支持微型机器学习&#xff08;TinyML&#xff09;。提出了波束距离-多普勒…

尚硅谷课程【笔记】——大数据之Shell【一】

课程视频&#xff1a;【【尚硅谷】Shell脚本从入门到实战】 一、Shell概述 为什么要学习Shell&#xff1f; 1&#xff09;需要看懂运维人员的Shell程序 2&#xff09;偶尔编写一些简单的Shell程序来管理集群、提高开发效率 什么是Shell&#xff1f; 1&#xff09;Shell是一…

【2025】camunda API接口介绍以及REST接口使用(3)

前言 在前面的两篇文章我们介绍了Camunda的web端和camunda-modeler的使用。这篇文章主要介绍camunda结合springboot进行使用&#xff0c;以及相关api介绍。 该专栏主要为介绍camunda的学习和使用 &#x1f345;【2024】Camunda常用功能基本详细介绍和使用-下&#xff08;1&…

Java进阶学习之路

Java进阶之路 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 Java进阶之路前言一、Java入门 Java基础 1、Java概述 1.1 什…

JAVA安全—反射机制攻击链类对象成员变量方法构造方法

前言 还是JAVA安全&#xff0c;哎&#xff0c;真的讲不完&#xff0c;太多啦。 今天主要是讲一下JAVA中的反射机制&#xff0c;因为反序列化的利用基本都是要用到这个反射机制&#xff0c;还有一些攻击链条的构造&#xff0c;也会用到&#xff0c;所以就讲一下。 什么是反射…