习惯用Jupyter Notebook的原因大概是code和markdown的混合使用特别方便,最近用到一个 %matplotlib inline ,了解了这些Magic Functions的强大之处,更加喜欢IPython这种交互编程方式。
Magic Functions分为两种:line magics 和 cell magics;
前者在前边加%,表示magic只在本行有效;
后者在前边加%%,表示magic在整个单元有效;
而这次用到的是前者,具体是 %matplotlib inline ,该命令可以将matplotlib的图表直接嵌入到Notebook中,或使用指定的界面库显示图表,inline 表示将图表嵌入到Notebook中;
# 内嵌画图
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
# 把图像传入到3D的视图中
ax = Axes3D(fig)
x = np.arange(-4,4,0.25)
y = np.arange(-4,4,0.25)
# 将x,y传入到网格中
X,Y = np.meshgrid(x,y)
R = np.sqrt(2*X**2 + Y**2)
Z = np.sin(R)
# 3D图,rstride和cstride是下图中小方格的大小
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))
# 等高线图的映射,底盘
ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='rainbow')
ax.set_zlim(-2,2)
# 已内嵌画图,可省略
# plt.show()
(-2, 2)
上例可以在Jupyter Notebook中验证,%matplotlib inline 可以在Ipython编译器里直接使用,功能是可以内嵌绘图,并且可以省略掉plt.show()这一步。
但是要注意:既然是IPython的内置magic函数,那么在Pycharm中是不会支持的。
# 测量单行代码的运行时间
%timeit [i for i in range(10000)]
308 µs ± 4.15 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%%timeit # 测量整个单元格代码的运行时间
test = []
for i in range(1000):
test.append(i)
68.5 µs ± 2.02 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
tip: %%timeit一定要放在第一行,注释放第一行也会UsageError: Line magic function %%timeit
not found.
# 显示当前工作目录的路径 -_-有linux内味了-_-
%pwd
'E:\\jupyter'
# 显示特定目录下的内容
%ls e:\jupyter\seaborn
驱动器 E 中的卷是 文档
卷的序列号是 14F7-4943
e:\jupyter\seaborn 的目录
2020/11/27 01:18 .
2020/11/27 01:18 ..
2020/11/26 09:47 .ipynb_checkpoints
2020/11/27 01:18 573,223 seaborn.ipynb
2020/11/26 02:30 7,316 test.ipynb
2 个文件 580,539 字节
3 个目录 45,481,107,456 可用字节
# 显示环境变量
%env
{'ALLUSERSPROFILE': 'C:\\ProgramData',
'APPDATA': 'C:\\Users\\Pluto\\AppData\\Roaming',
'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files',
'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files',
'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files',
'COMPUTERNAME': 'DESKTOP-QAF2GN4',
'COMSPEC': 'C:\\WINDOWS\\system32\\cmd.exe',
'DRIVERDATA': 'C:\\Windows\\System32\\Drivers\\DriverData',
'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer',
'FPS_BROWSER_USER_PROFILE_STRING': 'Default',
'HOMEDRIVE': 'C:',
'HOMEPATH': '\\Users\\Pluto',
'LOCALAPPDATA': 'C:\\Users\\Pluto\\AppData\\Local',
'LOGONSERVER': '\\\\DESKTOP-QAF2GN4',
'MOZ_PLUGIN_PATH': 'D:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\plugins\\',
'NUMBER_OF_PROCESSORS': '8',
'ONEDRIVE': 'C:\\Users\\Pluto\\OneDrive',
'OPENNI2_INCLUDE64': 'D:\\Program Files\\PCL 1.8.1\\3rdParty\\OpenNI2\\Include\\',
'OPENNI2_LIB64': 'D:\\Program Files\\PCL 1.8.1\\3rdParty\\OpenNI2\\Lib\\',
'OPENNI2_REDIST64': 'D:\\Program Files\\PCL 1.8.1\\3rdParty\\OpenNI2\\Redist\\',
'OS': 'Windows_NT',
'PATH':
......
a = 0
b = 3.5
c = 'csdn'
# %who 和 %whos都可以显示当前变量,%whos显示的信息更加丰富,当然也可以指定变量
%who
a b c
%whos
Variable Type Data/Info
-----------------------------
a int 0
b float 3.5
c str csdn
%who int
a
%whos int
Variable Type Data/Info
----------------------------
a int 0
# ! 可以执行shell命令,ping一下csdn的官网
! ping blog.csdn.net
正在 Ping blog.csdn.net [101.200.35.175] 具有 32 字节的数据:
来自 101.200.35.175 的回复: 字节=32 时间=45ms TTL=87
来自 101.200.35.175 的回复: 字节=32 时间=49ms TTL=87
来自 101.200.35.175 的回复: 字节=32 时间=84ms TTL=87
来自 101.200.35.175 的回复: 字节=32 时间=50ms TTL=87
101.200.35.175 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 45ms,最长 = 84ms,平均 = 57ms
等等,还有很多IPython的Magic Functions可以 %magic 查看…
%magic