惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
J
Java Code Geeks
L
LangChain Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
博客园 - 司徒正美
B
Blog
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟
使用IPython Notebook来学习编程
2015-05-20 · via 夜行人
  • 如果遇到了生活中不顺利的事情,你也只是需要一个新技巧了

  • 我记下学习和做过的每件事。所以我很轻松可以回忆起自己的各种心理状态

  • 只有你确定了你的目的,你才会应用你所学到的内容去实现你的目的

如果你知道以上三句话出自哪里,你会鄙视我三天的

所以我当然不会说出它们的出处,可偏偏你又会去搜索,我偏偏又喜欢到不得不引用它们orz


近来不少小伙伴有兴趣学编程,时常会被要求给些建议什么的。

从自己的经历说起~
大四去西安玩,途中快读完《Python for Data Analysis》,兴致盎然,不能入睡。书的作者也是Pandas的作者(Pandas是基于Python的结构化数据分析利器)。书中案例的操作性极强,精彩纷呈。当时在车上觉得大致掌握了Pandas。
而后从事的工作与数据分析关系不大。长时间没有接触它,等前段时间再想用它来从log(json格式)中做些分析/统计,却连如何将json数据加载到DataFrame都给忘了orz

不知你是否也有过此类尴尬,以至心有戚戚。对于那些不是日常使用的工具,如何保证学完后,能随时取用当时学会的知识,而不是遗忘之后,每次都从头再学一遍。

当时学会是远远不够的,我们更关心的是需要时拿得出来用。用兵一时

我的学习偏偏又习惯由兴趣驱动,等到想用的时候,兴趣不在这里,让我硬着头皮去再学一遍,恐怕效率是不高的。

于是我琢磨能否尽可能地留存学会的东西,或者复习时能快速进入掌握时的状态,我能想到的,且实践过行之有效的一些方法如下:

  1. 在书籍上批注,这样其实相当于给记忆打快照,日后再翻有助于勾起记忆
  2. 一边学习,一遍在印象笔记做笔记
  3. 学会某些知识后,即时梳理,整理为博客,给身边的小伙伴布道,将学会的东西表达出来,加深理解的同时,也方便自己此后穿梭回这个状态点。

以上几点便是我学习新东西时,习惯采用的方法,知识的留存率的确比采用它们之前提高不少,可也不尽如人意:

  1. 第一点实施起来并不方便,首先你得买纸质书,抛开价格贵,难搬家,易遗失不说,不少资料是根本没有纸质版的。我见过最好的替代方案是将素材拍到Noteself中,而后在其中做笔记,这是最近从一个小伙伴那儿学来的,笔记全部交给Noteself,从不丢失,随时可用,她的技能树极其茂盛,我想Noteself是很重要的原因,所谓善假于物。
  2. 我大约是那种离开印象笔记就生活无法自理的人。但即便如此,它也有不令人满意的地方,首先没法用markdown,这样一来做技术相关的笔记是很不方便的(弥补方法是使用web版本的印象笔记,而后用chrome的markdown here插件转化markdown)。另外学习中做的笔记往往是很碎片的,如果不定期整理/合并很难以复用,可能比资料本身还乱。
  3. 写博客是我现在最喜欢的一种学习方式,如果你还没开始,或不够坚定,建议看看刘未鹏的为什么你应该(从现在开始就)写博客,缺点的话,大约是它不适合容纳细碎的知识。

回到我们的编程话题。以上几点适用于大多数的学习,针对Python编程,我最近找到更好的方法,用了几天,觉得效率简直飞起。分享过来。

杀器就是IPython Notebook

ipython就已经够神器了,Tab键补全、魔术方法、与一堆科学计算库的搭配,以及强大的调试功能。

我此前有写过一篇ipython使用笔记

IPython Notebook是一种基于Web技术的交互式计算文档格式,同时也是计算工具(界面)

notebook的页面都被保存为.ipynb 的类JSON文件格式。这也是 Notebook 最吸引人的地方,其中可以写python代码,可以写markdown文档,可以呈现图表…

你还可以将写好的.ipynb上传到github,分发给小伙伴,拿到.ipynb的小伙伴在IPython Notebook中加载执行它,对你的工作便一目了然,你们近乎共享了编程的过程。你在.ipynb中加上批注和说明之后分发出去,它就成为绝佳的教学和交流的载体!

此外我最近在用它学习Pandas,以便做edX tracking logs的数据分析工作,简直酸爽

pydata-book是《Python for Data Analysis》一书中相应的示例源码。这本书我翻过,所以直接将其源码加载到ipyhton notebook里开撸,偶有不懂,通过交互式探索或是查阅书籍,很快就回忆起来了,而我又可以随时在其中注释批注,用markdown写心得或疑问,而所有这些,都连同可执行的代码保存在.ipynb里,

如果中途我遇到问题,我完全可以将代码连同批注和疑惑发给别人(仅是.ipynb这个文件),对方完全看得到我的思维过程。他也在.ipynb中解答,之后回传给我即可,多便捷的交流过程啊!

##我的Pandas学习环境

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
:::text
cd ~
mkdir pydata
cd pydata
git clone https://github.com/pydata/pydata-book
virtualenv pandas_env
source pandas_env/bin/activate
pip install ipython pyzmq jinja2 tornado jsonschema pylab
vim ~/.zshrc
#我用的是zsh,你用bash的话,对应的是 .bashrc
alias pandas='cd ~/pydata/pydata-book&&source ~/pydata/pandas_env/bin/activate&&ipython notebook'

退出重新进入shell,输入pandas,就进入学习环境了

这样一来,我每次想学习的时候,直接在终端输入pandas就可以开始了!循着上次的注释和笔记,很快就可以进入学习状态

pandas_shell

pandas_web1

pandas_web2

#后记 安装错误:No module named zmq.eventloop

解决方案: sudo pip install pyzmq --upgrade