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.pswp.cn/web/68069.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/68069.shtml
英文地址,請注明出處:http://en.pswp.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取地址操作符重載取地址操作符重…

Java 2024年面試總結(持續更新)

目錄 最近趁著金三銀四面了五六家公司吧&#xff0c;也整理了一些問題供大家參考一下&#xff08;適合經驗三年左右的&#xff09;。 面試問題&#xff08;答案是我自己總結的&#xff0c;不一定正確&#xff09;&#xff1a; 總結&#xff1a; 最近趁著金三銀四面了五六家公…

防火墻的安全策略

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…

工作流項目BPMN.JS_Question梳理

工作流項目 想了解如果候選人熟悉工作流技術、bpmn.js和Flowable工作流引擎&#xff0c;面試官會對哪些信息感興趣。我需要分析這個問題&#xff0c;并給出一個全面而結構化的回答。 首先&#xff0c;用戶可能希望了解作為前端面試官&#xff0c;應該關注候選人哪些方面的知識和…

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;。提出了波束距離-多普勒…

ORB-SLAM2源碼學習:KeyFrame.cc④: void KeyFrame::UpdateBestCovisibles更新最佳共視

前言 在添加新連接之后就要重新對所有的共視關鍵幀和權重的那兩個列表重新進行降序排列&#xff0c;這樣非常容易知道列表的第一位就是最佳共視關鍵幀和權重。 總的來說就是只要權重發生了變化就要調用這個函數來修改mvpOrderedConnectedKeyFrames共視關鍵幀和mvOrderedWeigh…

尚硅谷課程【筆記】——大數據之Shell【一】

課程視頻&#xff1a;【【尚硅谷】Shell腳本從入門到實戰】 一、Shell概述 為什么要學習Shell&#xff1f; 1&#xff09;需要看懂運維人員的Shell程序 2&#xff09;偶爾編寫一些簡單的Shell程序來管理集群、提高開發效率 什么是Shell&#xff1f; 1&#xff09;Shell是一…