1. 程式人生 > >Jupyter Notebook 常用魔法命令

Jupyter Notebook 常用魔法命令

Jupyter NoteBook 是功能強大的Python互動IDE,深受資料分析師和演算法工程師的熱愛。Jupyter NoteBook 在綜合使用文字、程式碼、圖片等多種元素展示設計者的想法方面有著美妙的使用者體驗。而其自帶的一些常用Magic Command 可以讓它變得更加得心應手。

magic函式主要包含兩大類,一類是行魔法(Line magic)字首為%,一類是單元魔法(Cell magic)字首為%%; 

最常用的魔法函式有以下幾個:

1、%lsmagic #列印當前可以用的魔法命令,當我們想使用一個魔法命令,而不知怎麼拼寫函式名時,可以使用%lsmagic來查詢;

%lsmagic
Available line magics:
%alias  %alias_magic  %autocall  %automagic  %autosave  %bookmark  %cat  %cd  %clear 
 %colors  %config  %connect_info  %cp  %debug  %dhist  %dirs  %doctest_mode  %ed  %edit 
 %env  %gui  %hist  %history  %killbgscripts  %ldir  %less  %lf  %lk  %ll  %load  %load_ext  
%loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %lx  %macro  
%magic  %man  %matplotlib  %mkdir  %more  %mv  %notebook  %page  %pastebin  %pdb  %pdef 
 %pdoc  %pfile  %pinfo  %pinfo2  %popd  %pprint  %precision  %profile  %prun  %psearch  
%psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  
%reload_ext  %rep  %rerun  %reset  %reset_selective  %rm  %rmdir  %run  %save  %sc  
%set_env  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_ls 
 %whos  %xdel  %xmode

Available cell magics:
%%!  %%HTML  %%SVG  %%bash  %%capture  %%debug  %%file  %%html  %%javascript  %%js  %%latex
  %%markdown  %%perl  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  
%%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile

Automagic is ON, % prefix IS NOT needed for line magics.

2、%matplotlib? #魔法命令+?顯示魔法命令的說明 Docstring

%ls?
Repr: <alias ls for 'ls -F --color'>
%lsmagic?
Docstring: List currently available magic functions.
File:      /usr/local/lib/python3.5/dist-packages/IPython/core/magics/basic.py

3、%matplotlib inline #使用matplotlib畫圖時,圖片嵌入在jupyter notebook裡面,不以單獨視窗顯示

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
plt.plot(np.arange(10))
[<matplotlib.lines.Line2D at 0x7f2204c19be0>]

4、%timeit %%timeit #為程式碼執行計時

import numpy as np
%timeit np.sin(24)
2.42 µs ± 592 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%%timeit
x=np.sin(20)
np.cos(-x)
5.08 µs ± 463 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

5、%%writefile #後面緊接著一個file_name.py,表示在jupyter notebook裡面建立一個py檔案,後面cell裡面的內容為py檔案內容

%%writefile test_peace.py
import numpy as np
print(np.random.randint(1,5))

在當前路徑下會生成一個test_peace.py的檔案,內容就是cell裡面的內容

Writing test_peace.py

6、%run #後面緊接著一個相對地址的file_name.py,表示執行一個py檔案

%run test_peace.py
3

7、%pwd #和linux一樣,查詢當前目錄

%pwd
'/home/hanxiaoyang/ml_jxy5/0.Teacher/Exercise'

8、%cd #更改當前目錄

%cd ../

操作起來和Linux,Unix系統的檔案操作差不多

/home/hanxiaoyang/ml_jxy5/0.Teacher

9、%cp #複製檔案

%cp test_peace.py test_load.py

10、%whos #檢視當前變數,型別,資訊

%whos
Variable   Type       Data/Info
-------------------------------
np         module     <module 'numpy' from '/us<...>kages/numpy/__init__.py'>
plt        module     <module 'matplotlib.pyplo<...>es/matplotlib/pyplot.py'>
x          float64    -0.3048106211022167
y          list       n=3

11、%reset #清除變數

%reset
%whos
Interactive namespace is empty.

前面定義的變數就已經全部被清除了
12、%del #清除某一個變數

13、%load #載入一個檔案裡面的內容

%load test_peace.py
# %load test_peace.py
import numpy as np
print(np.random.randint(1,5))