Jupyter Notebook是一款创建和分享计算文档的网络应用程序。它提供了一种简单、流线型、以文档为中心的体验。由于它可以同时显示丰富的文本和运行代码,并且其内置丰富的交互式控件,能够极大地丰富了可视化功能,给使用者非常直观地体验,因此它非常适合作为个人笔记工具和教学工具。
配套notebook文件下载,下载解压notebook.zip文件,在notebook目录下打开jupyter notebook。
建议下载Miniconda
打开Anaconda或者Miniconda的命令提示窗口,创建新的虚拟环境
# 将env_name替换成你的自定义环境名称
conda create -n env_name python=3.8 scikit-image=0.18 -y

# 查看新环境是否已经创建成功
conda env list

安装Jupyter
# 进入新创建的环境
conda activate env_name
# 安装Jupyter
pip install jupyter

输入jupyter notebook即可在浏览器中自动打开notebook

如果我们想新建一个notebook,并且使用当前新建的环境时,我们发现没有当前新建环境的IPython内核:

在当前环境下建立新的IPython内核
# 安装ipykernel
pip install ipykernel
# 生成ipykernel的配置文件
python -m ipykernel install --name env_name
# 查看已有的kernel
jupyter kernelspec list

再次启动jupyter notebook发现已经有了当前环境下的IPython内核了

# 安装扩展包
pip install jupyter_contrib_nbextensions
# 安装 javascript和css文件
jupyter contrib nbextension install --user
# 启动juputer notebook
发现多了Nbextensions

然后取消勾选下面的这个选项就可以使用扩展了

下面时几个比较有用的扩展
variable inspector
table of content
snippets
codefolding
autopep8
hide input
split cell notebook
zenmode
命令行配置
jupyter notebook --help查看配置选项配置文件配置
# 生成配置文件
jupyter notebook --generate-config
# 配置文件的位置
~/.jupyter # linux系统
C:\Users\<UserName>\.jupyter # windows系统

打开配置文件,jupyter_notebook_config.py,里面的内容默认全部注释掉,例如想要修改默认打开的本地目录,找到c.NotebookApp.notebook_dir:

保存后重启即可生效。
以!开始的一行命令可以运行系统命令(也就是启动jupyter notebook时的终端命令),这里以windows下的cmd命令提示符为例。

系统命令的输出内容可以储存在python变量中

在命令行中使用python变量

系统命令也可以嵌套在python循环内使用

在Jupyter Notebook中,可以使用Magic命令来执行Python语言之外的命令,即可以在Jupyter Notebook中混合执行操作系统命令和脚本,以及其他语言的代码(Ruby,R等)
%开头,该行后面的内容都是Line Magics代码。%%开头,后面整个单元格内都是Cell Magics代码。
查看帮助内容
%lsmagic查看所有魔法命令

%time?查看time魔法命令帮助文档

%time??查看time魔法命令源代码

%%writefile命令用于将本单元格中的代码写入一个文件。
命令格式:%%writefile [-a] filename
如果带有-a参数则将内容追加到文件中,否则将覆盖文件内容。

%pycat命令用于显示python源文件内容。
命令格式:%pycat filename,filename可以是本地文件、URL和代码历史范围等。

%run命令用于运行python源文件。
命令格式:%run filename。

%load命令用于加载文件到Notebook中。
命令格式:%run filename,filename可以是本地文件、URL和代码历史范围等。
运行前:

运行后:

%store命令用于保存变量当前值,可以在多个Notebook之间传递变量。
命令格式:%store variablename。
当前Notebook中储存:

另一个Notebook中取出

%who命令用于显示所有变量清单,也可以显示指定变量类型。
命令格式:%who [type].
没有type参数

有type参数

%matplotlib inline,使得matplotlib绘制的图像直接在单元格中显示,而不需要plt.show()。
# %matplotlib inline使得matplotlib绘制的图像直接在单元格中显示,而不需要plt.show()
%matplotlib inline
import matplotlib.pyplot as plt
from skimage import data
img=data.astronaut()
plt.figure(num='astronaut',figsize=(16,16)) #创建一个名为astronaut的窗口,并设置大小
plt.subplot(1,4,1) #将窗口分为两行两列四个子图,则可显示四幅图片
plt.title('origin image') #第一幅图片标题
plt.imshow(img) #绘制第一幅图片
plt.axis('off') #不显示坐标尺寸
plt.subplot(1,4,2) #第二个子图
plt.title('R channel') #第二幅图片标题
plt.imshow(img[:,:,0]) #绘制第二幅图片
plt.axis('off') #不显示坐标尺寸
plt.subplot(1,4,3) #第三个子图
plt.title('G channel') #第三幅图片标题
plt.imshow(img[:,:,1]) #绘制第三幅图片
plt.axis('off') #不显示坐标尺寸
plt.subplot(1,4,4) #第四个子图
plt.title('B channel') #第四幅图片标题
plt.imshow(img[:,:,2]) #绘制第四幅图片
plt.axis('off') #不显示坐标尺寸
pass
# plt.show() #显示窗口,有了%matplotlib inline 就可以省掉plt.show()了

使用两个修饰模块:单元魔法命令register_cell_magic,行魔法命令register_line_magic
定义一个行魔法命令,功能是翻译内容
%translate content,将content翻译为中文
使用新定义的行魔法命令

使得定义的魔法函数能被所有Notebook使用。
将自定义魔法命令添加到扩展中,所有的notebook都可以使用
可以将这个magic function添加到一个extension module,需要将这个py文件放在和notebook相同的目录。或者添加到~/.ipython/extensions,这样在新的notebook文件中使用%1oad_ext 扩展名 就可以得到刚才定义的magic function。~/.ipython/extensions会被自动添加到Python path,所以所有的notebook都可以找打这个extension。
第一步,将定义的魔法函数写入translate.py。

第二步,将translate.py文件添加到C:\Users\username\.ipython\extensions中。

第三步,在新的Notebook中使用%load_ext translate

display模块显示示多媒体内容Jupyter notebook中使用IPython.display模块可以输出显示多媒体内容,如音频、视频、图片和网页等。
导入需要的类和函数,display用于显示多媒体内容

显示图片

显示HTML

播放音频

显示视频

显示网页的IFrame类功能比较强大,单独拿出来介绍。
直接嵌入网页

嵌入在线音频
需要找到相应的嵌入代码,例如嵌入网易云音乐,可以去网易云官网找到嵌入代码,如下图所示:


效果如下:

嵌入在线视频
于音频类似,这里以哔哩哔哩为例,如下图:

效果如下

嵌入本地pdf
效果如下

ipywidgets创建交互界面widget是可以和用户交互的控件,如文本输入框,滑动条,按钮等,从而在Jupyter Notebook中构建可交互的用户界面。ipywidgets包含了丰富的widget,这些widget既是后端的python对象,也是前端的网页元素,他们可以相互发送和同步信息。
# 如果没有ipywidgets可以执行下面两条命令安装
!pip install ipywidgets
!jupyter nbextension enable --py widgetsnbextension
ipywidgets中提供了多种widget的类,在使用各种widget时一般先进行实例化,然后设置属性,最后使用display显示。下面演示一个滑动条的例子:

对于每个widget,其后端是Notebook内核中的一个python对象,而我们所看到的滑动条是前端页面对该对象创建的HTML/Javascript视图。因此我们改变前端的一些属性如滑动滑杆改变数值,后端滑杆的value属性也会相应发生改变,同理,我们修改后端的属性,前端的显示也会发生相应改变。
每个widget都是一个类,那么就有其相应的属性的方法,如上面的滑动条有description和value属性分别表示滑动条前面的描述文字和当前滑动条的值。
dir()函数查看widget的属性和方法

滑动条类的widget控件有很多,有单个数值的IntSlider和FloatSlider和范围数值的IntRangeSlider和FloatRangeSlider。
IntSlider和FloatSlider
IntSlider的数值都是整数,而FloatSilder是浮点数
以FloatSlider为例,效果如下:

属性设置设置:初始值为1.5,最小值为0.1,最大值为2.0,每次变化0.01
IntRangeSlider和FloatRangeSlider
和上面的区别在于,这里的数值返回的是一个范围
以以FloatRangeSlider为例

IntProgress和FloatProgress用于显示进度条。
IntProgress

FloatProgress

数值文本IntText、FloatText、BoundedIntText、BoundedFloatText,这四个widget提供了整数或者浮点数的数值文本框,并且可以通过右侧的箭头调整数值大小。
IntText和FloatText,没有数值范围限制

BoundedIntText和BoundedFloatText,有数值范围限制

文字文本Text、Textarea、Label、HTML
Text输入和显示文本内容

Textarea用于输入和显示多行文本
]
Label用于显示标签文本

HTML用于显示复杂格式文本

用于显示Bool值的一些控件
复选框Checkbox

状态开关按钮ToggleButton

验证控件Valid,无法点击改变值,只能设置和读取

还有一种常用的点击类控件Button,它有自己的特殊方法on_click()来监听Button控件的点击情况,这种点击情况可以称之为事件,当事件发生时会执行某些事件处理函数,具体在后面[5.3事件绑定](###5.3 事件绑定)中演示
选项类可以显示选项列表,包括单选功能的Dropdown、RadioButtons和Select,多选功能有SelectMultiple。
Dropdown下拉菜单

RadioButtons选项

Select选项

SelectMultiple多选项

Image显示图片

在所有widget中有一种特殊的控件——Output控件,它可以将输出统一显示在其实例化的控件中。

执行上面的代码,notebook中并没有输出,如果想要显示hello,需要使用display函数显示output对象,如下:

Output类中有一个重要的方法clear_output()来清除output显示的内容。运行下面的代码后,In[68]输出的hello会被清除。

下面使用Output控件显示一张图片和它的灰度直方图:

Output控件在后面实现一个完整的交互式应用中有重要作用,它可以将所有交互控件的组合统一集中在一个输出界面下。
如果需要按一定的布局来显示多种控件,那么一些排版类的控件很方便我们实现一定的布局,常用的排版控件主要有Box、HBox、VBox、GridBox、Layout、AppLayout等。
Box、HBox、VBox可以将各控件封装在一个“盒子”中进行排版,Box比较灵活,一般HBox和VBox可以满足一般的需求,HBox是将多个widget横向排列,VBox是将多个widget钟祥排列,下面是利用HBox和VBox排版后,显示昇思深度学习框架的一些信息。

AppLayout
AppLayout控件有header、left_siderbar、center、right_sidebar、footer属性,这些属性分别对象下面输出中的区域,可以使用AppLayout将想进行排版的控件赋值给相应的属性,用不到的位置可以赋值None,AppLayout会自动适应填充新布局。

一些数值类的widget可以建立关联,改变其中一个widget的值,与其关联的widget的值也会发生变化。
link()

注意建立关联的位置,改变滑动条的数值时文本框中的数值也会发生改变,反之亦然。
dlink()

它与link()的区别在于dlink()是单向连接的,改变滑动条的数值时文本框中的数值也会发生改变,反之则不行。
jslink()

jsdlink()

jslink()和jsdlink()在正常情况下于link()和dlink()的功能完全一致,但是当浏览器前端于后端内核断开时,前者依然有效(仅仅在显示层面)而后者失效。
上图时内核断开后改变滑动条数值时,文本框数值也会改变。
对于已经建立关联的对象,使用unlink()方法即可断开连接。

交互式应用要求应用需要对操作做出相应的响应,从使用者做出操作到应用响应这个过程被称为事件。例如,点击一个按钮控件就可以触发执行一个函数,这个函数被称为事件处理函数。
下面以Button为例:

上面的例子中,只要点击“按键1”就会打印上图所示两行内容,Button控件和事件处理函数是通过
on_click()方法进行绑定的,它是Button的一种特殊方法。进一步观察
magic()事件处理函数可以发现,该函数的传入参数是Button控件实例化的对象,on_click()方法可以执行magic()函数并且将控件对象传入,因此事件处理函数可以使用控件的属性和方法。
5.4.1节演示了Button控件的事件绑定方法on_click(),文本框也有类似的特殊方法on_submit(),示例如下:

on_click()和on_submit()是Button控件和Text控件特有的事件绑定方法,对于其他控件有一种通用的事件绑定方法observe(),下面以Dropdown控件为例:


上的的示例的功能是,下拉菜单选择图片名,下方图片会显示相应的图片。
observe()方法的作用是监听被绑定控件某些属性的变化,如上面监听的是Dropdown控件的value属性的变化,并将变化存在change这个字典中。可以观察最下方change的输出:{'name': 'value', 'old' : 'camera', 'new' : 'logo', 'owner': Dropdown(description='pick images', index=2, options=('cat', 'camera', 'logo', 'checkerboard', 'rocket', 'coins', 'colorwheel'), value='logo'), 'type' : 'change'}observe()的第一个输入参数是事件处理函数,第二个输入参数是要监听的属性,只要该属性一改变,就会触发事件处理函数。
前面介绍了widget控件的基本使用方法,现在可以利用上面介绍的内容制作一个完整的交互式应用,该应用的功能是显示指定图片及其高斯模糊图片,并且可以实时调节高斯模糊度,进行显示。
运行前请执行pip uninstall scikit-image和pip install scikit-image==0.18,其他版本可能会出现警告。
import ipywidgets as wgs
import matplotlib.pyplot as plt
from skimage import data,filters
# 必要数据
img_lists = ('cat','camera','logo','checkerboard','rocket','coins','text')
# 创建控件
head = wgs.HTML('<h1>Image Blurring App</h1>')
label_1 = wgs.Label(value="选择图片:")
label_2 = wgs.Label(value="选择模糊度:")
slider = wgs.IntSlider(description="Sigma",value=3,min=0,max=10,layout=wgs.Layout(height='auto', width='normal'))
dropdown = wgs.Dropdown(description="Images",options=img_lists,layout=wgs.Layout(height='auto', width='normal'))
output = wgs.Output()
# 定义事件处理函数
def on_dropdown_change(change):
sigma = slider.value
img = getattr(data,change.new)()
blurred = filters.gaussian(img,sigma=sigma,channel_axis=True,preserve_range=True).astype('uint8')
with output:
output.clear_output(wait=True)
plt.subplot(121)
plt.imshow(img,cmap='gray')
plt.title('Origanal')
plt.axis('off')
plt.subplot(122)
plt.imshow(blurred,cmap='gray')
plt.title('Blurred')
plt.axis('off')
plt.show()
def on_slider_change(change):
sigma = change.new
img = getattr(data,dropdown.value)()
blurred = filters.gaussian(img, sigma=sigma,channel_axis=True,preserve_range=True).astype('uint8')
with output:
output.clear_output(wait=True)
plt.subplot(121)
plt.imshow(img,cmap='gray')
plt.title('Origanal')
plt.axis('off')
plt.subplot(122)
plt.imshow(blurred,cmap='gray')
plt.title('Blurred')
plt.axis('off')
plt.show()
# 绑定事件
slider.observe(on_slider_change,names='value')
dropdown.observe(on_dropdown_change,names='value')
# 排版
left_box = wgs.VBox([label_1,dropdown,label_2,slider])
box = wgs.HBox([left_box,output])
vbox = wgs.VBox([head,box])
# 显示
display(vbox)

可以使用Dropdown选择要显示的图片,调节滑动条显示模糊后的图片。
下面是使用AppLayout排版得到的效果
# 使用AppLayout排版
from ipywidgets import AppLayout
AppLayout(header=wgs.HTML('<h1 style="text-align:center;">Image Blurring App</h1>'),
left_sidebar=left_box,
center=None,
right_sidebar=output,
footer=None)

除了上述上述可以手动制作交互应用,还可以通过内置的interact交互方式自动生成实时交互应用。
interact()
可以将上述代码进一步简化,在定义交互函数时使用@interact()装饰器,可以获得一样的效果:

interactive()interactive()和interact()的区别在于前者必须使用diaplay()才能显示,可以根据需要自主选择显示的位置,同时interactive()返回的是一个widget,因此可以根据需要调用interactive()中各widget的属性。


interact_manual()或continuous_update有时候希望调整结束后再显示最终结果,那么就可以使用interact_mannal()手动控制结果显示。

也可以使用控件的continuous_update属性,将其设置为False,及鼠标停止调节时,widget中的值才进行更新。

1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
我是Ruby新手,并被要求在我们的新项目中使用它。我们还被要求使用Padrino(Sinatra)作为后端/框架。我们被要求使用Rspec进行测试。我一直在寻找可以指导在Padrino上使用RspecforRuby的教程。我得到的主要是引用RoR。但是,我需要RubyonPadrino。请在任何入门/指南/引用/讨论等方面指导我。如有不妥之处请指正。可能是我没有针对我的问题搜索正确的词/短语组合。我正在使用Ruby1.9.3和Padrinov.0.10.6。注意:我还提到了SOquestion,但它没有帮助。 最佳答案 我没用过Pa
1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva
文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定