点击(此处)折叠或打开
-
import os
-
from os import path
-
import re
-
import IPython.nbformat.current as nf
-
-
def iter_notebooks():
-
for folder, subfolder, files in os.walk(".."):
-
name = path.basename(folder)
-
if re.match(r"\d+-\w+", name):
-
for fn in files:
-
if fn.startswith("_"):
-
continue
-
if re.match(r"\w+-\d\d\d-.+?\.ipynb", fn):
-
fn = path.join(folder, fn)
-
yield path.abspath(fn)
-
-
-
class Heading(object):
-
def __init__(self, level, title):
-
self.level = level
-
self.title = title
-
self.text_count = 0
-
self.code_line = 0
-
self.children = []
-
-
def append_text(self, count):
-
self.text_count += count
-
-
def append_code(self, count):
-
self.code_line += count
-
-
def append_heading(self, heading):
-
self.children.append(heading)
-
-
@property
-
def total_count(self):
-
return self.text_count + sum(h.total_count for h in self.children)
-
-
@property
-
def total_line(self):
-
return self.code_line + sum(h.total_line for h in self.children)
-
-
root = Heading(0, u"Python科学计算")
-
stack = [root]
-
-
for fn in iter_notebooks():
-
with open(fn, "rb") as f:
-
nb = nf.read(f, "json")
-
first_heading = False
-
for cell in nb["worksheets"][0]["cells"]:
-
cell_type = cell["cell_type"]
-
if cell_type == "heading":
-
first_heading = True
-
if not first_heading:
-
continue
-
-
if cell_type == "markdown":
-
stack[-1].append_text(len(cell["source"]))
-
elif cell_type == "code":
-
stack[-1].append_code(len(cell["input"].split("\n")))
-
elif cell_type == "heading":
-
level = cell["level"]
-
heading = Heading(level, cell["source"])
-
while level <= stack[-1].level:
-
stack.pop()
-
stack[-1].append_heading(heading)
-
stack.append(heading)
-
-
def output(heading, level=0):
-
if level == 1:
-
print
-
print u" "*level + heading.title + " [%d, %d]" % (heading.total_count, heading.total_line)
-
for h in heading.children:
-
output(h, level+1)
-
- output(root)
Python科学计算 [327659, 9154] Python科学计算环境的安装与简介 [13131, 206] Python简介 [4899, 9] Python2还是Python3 [264, 0] 开发环境 [1098, 1] WinPython [823, 1] Anaconda [141, 0] IDE [2483, 8] Spyder [2483, 8] Pycharm [0, 0] IPython Notebook入门 [5929, 156] 基本操作 [2669, 30] 运行IPython Notebook [691, 0] 操作单元 [581, 0] 安装MathJax [371, 7] 操作运算进程 [684, 11] 在线帮助和自动完成 [342, 12] 魔法(Magic)命令 [1886, 63] 显示matplotlib图表 [636, 10] 性能分析 [833, 43] 代码调试 [237, 10] Notebook的显示系统 [1206, 63] display模块 [310, 23] 自定义对象的显示格式 [797, 40] 扩展库介绍 [2303, 41] 数值计算库 [539, 5] 符号计算库 [158, 3] 绘图与可视化 [440, 9] 数据处理和分析 [257, 6] 界面设计 [416, 0] 图像处理和计算机视觉 [190, 8] 提高运算速度 [234, 10] NumPy-快速处理数据 [45457, 813] ndarray对象 [12185, 196] 创建 [550, 13] 元素类型 [998, 19] 自动生成数组 [1852, 21] 存取元素 [1250, 32] 多维数组 [2154, 30] 结构数组 [1780, 46] 内存结构 [3365, 34] ufunc函数 [7478, 106] 四则运算 [1071, 5] 比较和布尔运算 [1349, 11] 自定义ufunc函数 [960, 14] 广播 [1645, 33] ufunc的方法 [1317, 10] 多维数组的下标存取 [3015, 45] 下标对象 [414, 5] 整数数组作为下标 [1202, 24] 一个复杂的例子 [827, 9] 布尔数组作下标 [479, 7] 庞大的函数库 [18693, 360] 随机数 [1212, 30] 求和、平均值、方差 [2541, 39] 大小与排序 [2940, 65] 统计函数 [2001, 20] 分段函数 [2068, 29] 操作多维数组 [1984, 52] 多项式函数 [1254, 30] 多项式类 [277, 14] 各种乘积运算 [1294, 36] 广义ufunc函数 [3011, 45] 实用技巧 [3640, 104] 动态数组 [1540, 35] 和其它对象共享内存 [1320, 38] 与结构数组共享内存 [780, 20] 利用缓存提高数组访问速度 [0, 11] SciPy-数值计算库 [41307, 1325] 常数和特殊函数 [1199, 27] 拟合与优化-optimize [4980, 199] 非线性方程组求解 [1499, 26] 最小二乘拟合 [1379, 95] 计算的函数局域最小值 [1473, 56] 计算全域最小值 [566, 22] 线性代数-linalg [5629, 117] 解线性方程组 [953, 24] 最小二乘解 [1646, 29] 特征值和特征向量 [2109, 49] 奇异值分解-SVD [868, 15] 统计-stats [8703, 247] 连续和离散概率分布 [2421, 47] 二项、泊松、伽玛分布 [3303, 101] 学生t-分布与t检验 [1500, 56] 卡方分布和卡方检验 [1340, 43] 数值积分-integrate [8826, 317] 球的体积 [1153, 17] 解常微分方程组 [904, 24] ode类 [2465, 125] 信号处理-signal [81, 0] 中值滤波 [558, 11] 滤波器设计 [1179, 48] 连续时间线性系统 [2398, 92] 插值-interpolate [4210, 159] 一维插值 [2501, 83] 外推和Spline拟合 [1119, 42] 参数插值 [513, 14] 单调插值 [166, 12] 多维插值 [1628, 76] 稀疏矩阵-sparse [2379, 89] 稀疏矩阵的储存形式 [780, 17] 最短路径 [1242, 72] 图像处理-ndimage [5132, 168] 图像滤波 [341, 28] 热点图 [309, 28] 形态学图像处理 [2287, 89] 膨胀和腐蚀 [911, 26] Hit和Miss [1224, 44] 图像测量 [2225, 51] matplotlib-绘制精美的图表 [44207, 1116] 快速绘图 [7166, 133] 使用pyplot模块绘图 [2120, 28] 面向对象方式绘图 [939, 3] 配置属性 [694, 18] 绘制多子图 [1363, 26] 配置文件 [931, 16] 在图表中显示中文 [1119, 42] Artist对象 [7245, 131] Artist的属性 [886, 6] Figure容器 [1192, 14] Axes容器 [2009, 27] Axis容器 [1123, 66] Artist对象的关系 [714, 8] 坐标变换和注释 [8924, 128] 四种坐标系 [1604, 9] 坐标变换的流水线 [3464, 23] 制作阴影效果 [482, 18] 添加注释 [2112, 17] 块、路径和集合 [4522, 185] Path与Patch [803, 15] 集合 [3719, 170] 曲线集合(LineCollection) [878, 76] 多边形集合(PolyCollection) [301, 27] 路径集合(PathCollection) [468, 13] 椭圆集合(EllipseCollection) [932, 18] 数据空间中的圆形集合对象 [472, 36] 绘图函数简介 [7031, 161] 对数坐标图 [391, 12] 极坐标图 [318, 12] 柱状图 [479, 10] 散列图 [663, 8] 图像 [1259, 38] 等值线图 [1664, 34] 四边形网格 [871, 35] 三维绘图 [1239, 12] 绘图后台 [3325, 298] 使用agg后台在图像上绘图 [306, 148] 响应事件 [2971, 150] 键盘事件 [725, 26] 鼠标事件 [942, 57] 点选事件 [365, 17] 实时高亮显示曲线 [850, 50] 事件、动画与控件 [5585, 80] 动画 [1251, 49] 使用缓存快速重绘图表 [503, 17] animation模块 [493, 17] 控件 [4204, 31] 分析Cursor的代码 [3906, 18] 图像遮罩绘制控件 [132, 12] Pandas-方便的数据分析库 [11027, 199] 分析Pandas项目的提交历史 [3276, 43] 按月统计 [757, 13] 按作者统计 [1078, 17] Pandas中的数据对象 [3730, 44] Series对象 [1586, 21] DataFrame对象 [640, 0] Index对象 [322, 7] DataFrame的内部结构 [1182, 16] 下标存取 [1284, 14] 内部提速函数 [2479, 97] 获取第N小的元素 [215, 7] 中值滤波 [713, 30] HashTable [630, 12] 对象数组相关的函数 [478, 9] 药剂反应实验数据分析 [266, 39] SymPy-符号运算好帮手 [6865, 161] 从例子开始 [4244, 3] 封面上的经典公式 [4188, 3] 机械运动学模拟 [2362, 158] 推导系统的微分方程 [909, 32] 将符号表达式转换为程序 [1118, 87] 动画演示 [192, 36] Traits & TraitsUI-轻松制作图形界面 [37679, 943] Traits类型入门 [6649, 116] 开发背景 [1822, 22] Trait属性的功能 [2203, 44] Trait类型对象 [921, 28] Trait的元数据 [1703, 22] Trait类型 [8107, 212] 预定义的Trait类型 [2917, 38] Property属性 [1376, 22] Trait属性监听 [1467, 65] Event和Button属性 [581, 22] 代理属性 [1265, 46] 动态添加Trait属性 [501, 19] 创建自己的Trait类型 [3013, 109] 继承TraitType [1433, 49] 使用Trait类创建新类型 [958, 21] TraitHandler类 [526, 39] TraitsUI入门 [9996, 178] 缺省界面 [609, 9] 用View定义界面 [8938, 169] 外部视图和内部视图 [3773, 57] 多模型视图 [975, 35] Group对象 [2914, 75] 配置视图 [1165, 2] 用Handler控制界面和模型 [4356, 109] 用Handler处理事件 [2279, 66] Controller和UIInfo对象 [649, 16] 响应Trait属性的事件 [747, 27] 属性编辑器 [4928, 166] 编辑器演示程序 [1215, 77] 对象编辑器 [3236, 88] IPython Notebook中的控件 [185, 53] TVTK与Mayavi-数据的三维可视化 [37885, 999] VTK的流水线(Pipeline) [5124, 69] 显示圆锥 [1949, 37] 用ivtk观察流水线 [3081, 32] 照相机 [629, 4] 光源 [415, 7] 实体 [1136, 4] 数据集(Dataset) [6367, 136] ImageData [2546, 48] RectilinearGrid [687, 16] StructuredGrid [1345, 30] PolyData [1495, 42] TVTK的改进 [2344, 91] TVTK的基本用法 [1060, 0] Trait属性 [327, 7] 序列化(Pickling) [156, 15] 集合迭代 [130, 24] 数组操作 [286, 15] TVTK可视化实例 [8932, 331] 切面 [3260, 69] 等值面 [1491, 31] 流线 [2433, 61] 计算圆柱的相贯线 [1487, 170] 用mlab快速绘图 [11263, 186] 点和线 [1365, 13] Mayavi的流水线 [1888, 22] 二维图像的可视化 [2306, 39] 网格面mesh [1621, 41] 修改和控制流水线 [1212, 39] 标量场 [1592, 12] 矢量场 [932, 20] Mayavi和TVTK的关系 [1300, 37] 显示TVTK流水线 [380, 16] 两条流水线的关系 [766, 21] 将TVTK和Mayavi嵌入到TraitsUI界面中 [1891, 146] TVTK场景的嵌入 [697, 48] Mayavi场景的嵌入 [1063, 98] OpenCV-图像处理和计算机视觉 [25245, 566] 数据类型 [3759, 52] 图像类型 [818, 8] 类型转换 [2174, 26] 图像处理 [4954, 43] 二维卷积 [1521, 29] 形态学运算 [1269, 1] 填充-floodFill [1333, 13] 去瑕疵-inpaint [726, 0] 图像变换 [8225, 337] 几何变换 [1374, 47] 重映射-remap [1584, 71] 直方图 [2570, 100] 直方图反向映射 [1080, 32] 直方图匹配 [496, 46] 二维离散傅立叶变换 [1513, 47] 用双目视觉图像计算深度信息 [1184, 72] 图像识别 [7546, 114] 用Hough变换检测直线和圆 [2877, 75] 图像分割 [2017, 39] Mean-Shift法 [723, 13] 分水岭算法 [1197, 26] SURF特征匹配 [2612, 0] 形状与结构分析 [562, 18] Cython-编译Python程序 [26219, 1023] Cython入门 [5323, 106] 计算矢量集的距离矩阵 [702, 57] 将Cython程序编译成扩展模块 [883, 21] 使用cdef关键字声明变量类型 [2889, 13] 使用cdef定义C语言函数 [757, 15] 高效处理数组 [3788, 217] 提高绘图速度 [1116, 131] 使用Python标准对象和API [2360, 85] 操作`list`和`tuple`对象 [1112, 63] 用`array.array`作动态数组 [1248, 22] 扩展类型(cdef类) [5537, 341] 扩展类型的基本结构 [994, 36] 一维浮点数向量类型 [2072, 119] 包装ahocorasick库 [2342, 186] Cython技巧集 [8161, 266] 创建ufunc函数 [3139, 83] 快速调用DLL中的函数 [1488, 63] 调用BLAS函数 [3454, 120] 包装`saxpy()`函数 [1093, 34] `dgemm()`高速矩阵乘积 [2191, 86] 使用泊松混合合成图像 [3307, 63] 泊松混合算法 [3176, 63] 信号处理与数字滤波器 [0, 255] FDN混响 [0, 255] Cython Speedup [0, 187] 推荐算法 [5409, 195] 推荐性能评价标准 [476, 12] 矩阵分解 [1155, 22] 使用最小二乘法实现矩阵分解 [2246, 46] 使用Cython迭代实现矩阵分解 [1101, 93] 物理模拟 [1991, 194] 悬链线 [1775, 109] 使用运动方程模拟悬链线 [484, 43] 通过能量最小值计算悬链线 [954, 44] 最速降线 [216, 85] 频域信号处理 [9479, 364] FFT知识复习 [1770, 30] 合成时域信号 [820, 56] 观察信号的频谱 [4693, 148] 窗函数 [636, 35] 频谱平均 [711, 27] 谱图 [822, 12] 精确测量信号频率 [892, 42] 卷积运算 [2046, 130] 快速卷积 [899, 36] 卷积的分段运算 [950, 94] 布尔可满足性问题求解器 [9085, 287] 用Cython包装PicoSAT [2394, 110] 数独游戏 [2314, 64] 扫雷游戏 [2550, 105] 识别雷区中的数字 [856, 35] 用SAT扫雷 [1061, 69] 自动扫雷 [376, 1] 分形 [9366, 445] Mandelbrot集合 [2232, 103] 纯Python实现 [451, 32] 用Cython提速 [303, 10] 连续的逃逸时间 [466, 19] Mandelbrot演示程序 [504, 42] 迭代函数系统(IFS) [3415, 125] 2D仿射变换 [865, 0] 迭代函数系统设计器 [1169, 67] L-System分形 [1023, 104] 分形山脉 [2494, 113] 一维中点移位法 [979, 23] 二维中点移位法 [571, 40] 菱形方形算法 [833, 50]