关键词:
智能决策上手系列教程索引
不断更新
部分内容来自于翻译整理
-
多行输出
在Notebook的中开头cell中添加以下代码可以实现多行输出:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = ‘all‘ #默认为‘last‘
例如:
如果需要一劳永逸的在每个文件中自动实现这个功能,可以在macOS的/Users/your_user_name/.ipython/profile_default/或者windows的C:Usersyour_profile.ipythonprofile_default文件夹下创建ipython_config.py文件。(mac下你可以在终端进入这个目录touch ipython_config.py来创建)。
然后打开ipython_config.py文件,添加以下两行:
c = get_config()
c.InteractiveShell.ast_node_interactivity = "all"
保存,重启Notebook后生效。
感谢离宫2提示这个技巧。
-
module ‘numpy‘ has no attribute ‘version‘
import pandas as pd
就报这个错误,原因未知,解决方法就是-f强制重新安装:
conda install -f numpy
conda install -f pandas
-
Jupyter Notebook可能是当今最常用的数据科学工具
写Python代码很多人会告诉你要用Pycharm,但那是开发Python项目用的, 那种由成百上千个文件组成、包含数万行代码的项目必须要很专业的复杂工具才行。
但如果你的目的是数据分析、算法研究等方面的工作,那么Jupyter Notebook 最适合你,因为它足够简单,让你可以专注于数据和算法的逻辑而不是工具。 -
JupyterNotebook不仅可以写代码还能输出图像、表格等
你可以用用下面一些代码实验(代码来自天池实验室):
%matplotlib inline import numpy as np import matplotlib.pyplot as plt from scipy.special import jn from IPython.display import display, clear_output import time x = np.linspace(0,5) f, ax = plt.subplots() ax.set_title("Bessel functions") for n in range(1,10): time.sleep(1) ax.plot(x, jn(x,n)) clear_output(wait=True) display(f) plt.close()
得到如下图所示:
常用的绘图分析工具有Matplotlib、Seaborn、plot.ly。
-
使用Anaconda来安装最省事
如果你要快速开始Python编程,直接下载Anaconda是最简单的,它包含了你所需要的一切,甚至连Python都不需要单独安装。
开机,下载和安装Anaconda,打开Anaconda navigator就看到Jupyter notebook了。
Anaconda3.5.2:
百度网盘下载(非VIP较慢)
官方下载(Windows电脑使用)
官方下载(苹果电脑使用) -
更省事的是阿里云天池Notebook实验室
这是一个在线版的Notebook,什么都不需要安装就能开始编码和运行!
唯一麻烦的就是需要你注册并实名认证。
你在网页里编写Python代码,然后免费在阿里云服务器上运行并返回结果。你写的代码也存在服务器上,不用再担心会丢失了,它甚至包含了代码版本管理功能!
阿里云天池Notebook
已知的确缺点有:- 不能随意的安装第三方功能模块。不过它已经自带了很多,大多数情况都足够了。
- 不能安装Notebook插件。基本上也不是问题,没事谁也不折腾这个。
- 要命的是你不能像控制自己的电脑一样控制远程服务器,当你在爬取某个网站数据的时候,网站发现你的IP(阿里云服务器的IP)访问不正常要求在浏览器内做人工识别字符验证,这时候你就无助了。——如果在你自己电脑上就只要打开浏览器操作一下就OK了。
-
Ipython是Jupyter的前身
Jupyter项目是从Ipython项目演进过来的,所以当你看到存储的文件是
.ipynb
时候不要奇怪,就是ipython notebook的意思。实际上以后在很多地方都会看到Ipy字样。 -
JupyterLab是Notebook的加强版
在Anaconda navigator里面还有一个JupyterLab。Lab在Notebook基础上增加了更多的功能,如果你已经使用过一段时间的Notebook,那可以试试看Lab。
-
Shift+回车执行单元代码
快速运行并输出结果,并跳转到下一个单元。
-
代码自动完成
在代码顶部添加
%config IPCompleter.greedy=True
这一行并且shift+回车运行,对于接下来运行过的内容都会被列入自动提示中。
按Tab键弹出自动提示
如下图,输入my然后Tab键就弹出上面自定义的两个变量名,然后按回车直接输入myCount
,按向下箭头键再回车就输入myNum
。
同样对于import
导入的功能模块也可以提示。比如下图,输入requ
然后按tab就自动补全输入requests
(因为已经导入,并且是唯一的,而刚才的myCount
和myNum
都是my
开头)。
输入到requests.
的时候按tab就会弹出requests
包含的所有功能命令,继续输入g
就得到下图的情况。
-
不要把代码都写在一个单元cell里!
这非常重要!
但也不要每行一个cell...
合理安排,一个cell就是一个小的逻辑单元,这样既可以理清思路,又方便单独运行每个cell方便测试寻找问题。
推荐把相关的设置变量都集中放在最上面单独一个或几个cell,这样以后使用时候可以集中修改,不影响代码逻辑。
比如下图中的代码,以后修改只要修改两个变量num1、num2
就可以直接运行得到结果。
另外一个建议就是把能够独立的代码变为一个def
单独拿出去作为cell内容,比如下面把求整体方差avri
分拆出了两个def
函数,avg
求平均数,sqr
求两数差的平方。(代码仅供示意)
-
Cell不仅可以写代码,还能Markdown
Markdown是用来写文章的,比如这个简书文章就是用markdown语法写的。
新建cell可以选markdown用来写代码注释。
shift回车运行后是这样的(双击可以返回到修改模式):
-
更改默认打开的项目
默认Notebook总是打开电脑中我的文档目录,以下方法可以让它打开指定的目录。
打开命令行工具输入jupyter notebook --generate-config
然后会返回一个地址,找到它(可能是隐藏文件),用写字板打开那个文件jupyter_notebook_config.py
:
然后再顶部添加(等号后面引号内换成你自己的文件夹地址)c.NotebookApp.notebook_dir = ‘/Users/zhyuzh/Desktop/Jupyter‘
然后重新打开Jupyter Notebook就会默认打开这个文件夹了。苹果电脑显示隐藏文件的命令:
defaults write com.apple.finder AppleShowAllFiles -bool YES
苹果电脑下复制当前文件夹路径快捷键Command+Option+C
-
扩展插件
插件可以让Notebook变得更好用一些。一般情况我们不需要安装插件,等你使用久了再慢慢了解。
官方Github插件主题列表
非官方contrib贡献插件列表
非官方贡献版插件更多更容易安装些,因为可以一次都装上,要用哪个再开启哪个。
安装命令:conda install -c conda-forge jupyter_contrib_nbextensions
运行后可能稍等一下才有反应,根据提示按y。
然后再启用,比如启用collapsible_headings:jupyter nbextension enable collapsible_headings/main
注意/main
是必须的。collapsible_headings
插件可以让Notebook把一个cell折叠起来,在cell菜单下出现insert head cell
字样:这个插件在JupyterLab下面好像不能用。不过Lab自身就可以双击折叠一个cell,比这个更方便些。
collapsible_headings/main
其实是指文件夹collapsible_headings
下的main.js
文件。所有可用的文件夹名称都可以在电脑里搜索nbextensions
文件夹找到。苹果电脑的位置类似/anaconda3/pkgs/jupyter_contrib_nbextensions-0.5.0-py36_0/lib/python3.6/site-packages/jupyter_contrib_nbextensions/nbextensions
JupyterNoteBook的插件本质都是NodeJs的npm插件。如果你了解nodejs那么很容易搞明白它的原理。 -
格式化自动美化代码
代码整齐很重要!
对于Python来说混乱的代码格式可能是致命的!
这里介绍安装code-pretty
自动格式化插件,先执行命令开启:jupyter nbextension enable code_prettify/code_prettify
依照官方说明还需要执行另外一个命令安装必要的第三方功能模块:conda install yapf
然后就可以看到Notebook如下图出现一个小锤头工具。点击它就能把当前cell的代码自动格式化变整齐了,也可以使用快捷键Ctrl+L
(苹果下也是ctrl不是Command)。 -
用
?
输出帮助提示比如下图:
-
运行或载入外部Python文件
使用
%run
代码可以直接外部的执行.py文件,比如在Notebook文件夹内有一个a.py
文件:aa=‘haha‘ print(aa)
那么可以用下面代码直接在Notebook内运行它(注意这里的
./
表示在同一文件夹下)%run ./a print(‘>>‘+aa)
如果使用%load
则直接把代码读进来(下面是%load ./a
运行的结果):
-
公式编辑器LaTeX
Notebook的Markdown单元是支持LateX公式编辑的,比如输入
\( P(A mid B) = fracP(B mid A) , P(A)P(B) \)
运行得到下图:
关于LaTeX语法可以在简书里搜索。 -
可以保存为.py或pdf文件
从
file
菜单可以保存为多种格式。
你应该知道的5个docker工具
你可以在网上找到大量炫酷的Docker工具,并且大部分是开源的,可以通过Github访问。在过去的两年里,我开始在开发项目中大量使用Docker。当你开始使用Docker,你会发现它比你想象的还要适合于更多的使用场景。你也许希望Docker... 查看详情
作为程序员你应该知道的数学公式
等差数列等差数列an的通项公式为**:an=a1+(n-1)d。**前n项和公式为:Sn=n*a1+n(n-1)d/2或Sn=n(a1+an)/2。等比数列:等差数列an的通项公式为**:an=a1×q^(n-1)。**前n项和公式为:Sn=n*a1+ 查看详情
作为程序员你应该知道的数学公式
等差数列等差数列an的通项公式为**:an=a1+(n-1)d。**前n项和公式为:Sn=n*a1+n(n-1)d/2或Sn=n(a1+an)/2。等比数列:等差数列an的通项公式为**:an=a1×q^(n-1)。**前n项和公式为:Sn=n*a1+n(n-1)d/2或Sn... 查看详情
你应该知道的8个java牛人
简单介绍一下8个Java牛人,他们为Java社区,创建了框架(framework),产品或者是写书,影响甚至改变了Java开发的方法8.Tomcat创始人JamesDuncanDavidson,是当时Sun公司的软件工程师(1997-2001),创建了Java的Web服务器Tomcat,Tomcat广泛应用... 查看详情
javascript中你最应该知道的33个概念
你觉得自己对JavaScript了解多少?你可能知道如何编写函数,理解简单的算法,甚至可以编写类。但是你知道类型化数组是什么吗?你现在不需要知道所有这些概念,但你最终会在以后的职业生涯中需要它们。这就是为什... 查看详情
网络安全你应该知道的几个网络安全概念
我们大家都知道网络安全的重要性,但对于网络安全相关知识了解的少之又少。今天我们小编就告诉你几个网络安全概念,以便大家了解。一、安全Web网关安全Web网关已经从其过去优化互联网带宽的目的演变为保护用户... 查看详情
从业十年分享:你应该知道的一些测试职业事实!
很多初入行的同学,都喜欢讨论一些话题:薪资、加班、技术方向、工具、资料、视频等等; 今天老徐告诉大家几个关于测试职业的事实:-1-看到从事了多年了从业者就觉得是大牛?想抱大腿?很多从业了N年的测试同... 查看详情
你应该知道的11个vscode特性和技巧
1.带连字符的字体在处理大型项目时,带有连字的字体使代码更干净、更方便,您可以通过结合连字的特殊字体使您的编辑器体验更好。有几种支持连字的字体可用,但您可以简单地坚持使用经典的FiraCode。要在VSCode... 查看详情
软件工程师你应该知道的100个原则
构建软件:(1)过早优化是万恶之源。不要低估这个说法。(2)您很少需要从头开始构建某些东西。几乎每个用例都有库和依赖项。所以握住你的键盘,不要重新发明轮子。(3)了解问题的范围是您在找到解决方案之前需要做... 查看详情
每个linux新手都应该知道的10个命令
你可能认为你是Linux新手,但实际上并不是。全球互联网用户有3.74亿,他们都以某种方式使用Linux,因为Linux服务器占据了互联网的90%。大多数现代路由器运行Linux或Unix,TOP500超级计算机也依赖于Linux。如果你拥有一台Android智能... 查看详情
linux新手应该知道的26个命令
...体验了Linux桌面并安装了一些你喜爱和需要的软件之后,应该去了解下Linux真正的魅力所在:命令行。每一个Linux命令其实就是一个程序,借助这些命令,我们可以办到非常多的事情。下面将会为大家介绍一下几个常用的命令。&nb... 查看详情
关于浮动与清除浮动,你应该知道的(代码片段)
我在做页面布局的时候,多多少少总会受到来自浮动的困扰,因此专门通过实践来总结一下浮动与清除浮动。首先总结几个基础的概念:浮动:设置浮动的元素会脱离文档流,不会影响块元素的布局,但是会影响内联元素的排列... 查看详情
对 MKP 放宽的线性规划
...6-2716:34:57【问题描述】:如何计算才能找到这种放松。我应该知道什么才能找到它。假设我有n个物品和m个背包。所以我想知道放松的次数。有没有人至少可以给我一些想法。我一直在寻找它。网上有一些文章,但不是很清楚。... 查看详情
jupyter-notebook快捷键
JupyterNotebook的快捷键JupyterNotebook有两种键盘输入模式。编辑模式,允许你往单元中键入代码或文本;这时的单元框线是绿色的。命令模式,键盘输入运行程序命令;这时的单元框线是灰色。命令模式(按键Esc开启)Enter:转入编辑模... 查看详情
每个开发人员都应该知道的10个github仓库
作者:Pawel翻译:LeanCloudGitHub不仅是互联网上最有趣的开源项目的所在地,而且还是共享各种资源的好地方,从免费的书籍到API,产品路线图到项目思路到项目方案。但是,由于数量庞大,你可能很难找到实际有用的仓库。因此... 查看详情
你应该知道的模型评估的五个方法
你应该知道的模型评估的五个方法好久没更新了,我怕再不更,我要掉粉了,这次来更新的是模型评估的常见的五个方法:1、混淆矩阵。2、提升图参考技术A你应该知道的模型评估的五个方法好久没更新了,我怕再不更,我要掉... 查看详情
你应该知道的es2020中的10个javascript新特性(代码片段)
好消息–ES2020的新功能现已完成!这意味着我们现在对ES2020中发生的变化有了完整的了解,ES2020是JavaScript的新的和改进的规范。因此,让我们看看这些变化是什么。1.BigIntBigInt是JavaScript中最令人期待的功能之一,... 查看详情
关于php数组你应该知道的事情
(1)、PHP数组的遍历顺序先举个栗子:<?php $arr[‘a‘]=‘123‘; $arr[‘b‘]=‘456‘; $arr[‘c‘]=‘789‘; foreach($aas$val){ var_dump($val); } 这段代码的输出,显然会得到如下的结果: 那么,如果是如下的代码呢?<?php $arr[2]=... 查看详情