使用ctypes中提供的函数,可以将对象的地址转换为对象:

1def id_to_object(id_):
2    import ctypes
3    return ctypes.cast(ctypes.c_void_p(id_), ctypes.py_object).value

0 1 2 3 4

用OpenCV的matchTemplate()函数找两幅图像中的不同点,本文中的图像为公司内部交流杂志中的题目,答对了有奖品拿。

Shapely是一个很方便的几何图形处理扩展库,本文通过几个实例介绍它的一些基本功能。

本文通过实例介绍二项分布和Beta分布的含义,并使用pymc对抛硬币进行模拟实验,从而获得Beta分布。

计算两个任意椭圆的交点需要求解一个一元四次方程,而通过椭圆的参数计算出这个方程的系数也是很麻烦的事情。本文通过Sympy进行符号运算,并自动生成计算交点的程序。

Pandas的groupby操作十分迅捷,本文介绍其运算原理,以及Pandas内部所采用的优化手段。

Pandas中的Series对象提供了数组和字典的功能,在简要介绍其用法之后,我们将深究一下Series对象的实现原理。

NumPy的创始人Travis Oliphant在离开Enthought之后,创建了CONTINUUM,致力于将Python大数据处理方面的应用。最近推出的Numba项目能够将处理NumPy数组的Python函数JIT编译为机器码执行,从而上百倍的提高程序的运算速度。

本文分析IPython是如何将对象转换为显示信息的,如何自定义对象的显示。

本书介绍如何使用Sphinx、Leo、xeLaTex等软件制作一个写书环境。
本书通过有趣的实例程序详细地介绍了Prolog语言的语法,以及其在人工智能领域方面的应用。
在《Python科学计算》中,我们用许多实例介绍了一些常用的科学计算库的用法。然而为了将书中的知识融会贯通,还需要你自己动手,编写程序解决问题。本书提供了大量的练习题,并且每道练习题都提供了详细的说明和辅助代码,让你可以专心于解决问题的关键点。
Python是一门简单易学的编程语言,如果读者已经掌握了一门编程语言,那么可能只需要花一天时间学习Python的基本语法,就能开始用它解决问题。但真正掌握一门编程语言都需要持之以恒地长期付出努力,所以在你用Python解决问题的过程中,还需要不断地学习和训练。 本书的每个章节都会对Python的某个方面进行较深地挖掘,有时候这些内容甚至不能运用到实际的工作中。然而学习的乐趣正在于此,让我们将这些一点一滴的乐趣积攒起来,说不定它们哪天能真的派上用场,帮你解决大问题呢!
本书介绍如何用Python开发科学计算的应用程序,除了介绍数值计算之外,还着重介绍如何制作交互式的2D、3D图像,如何设计精巧的程序界面,如何与C语言编写的高速计算程序结合,如何编写声音、图像处理算法等内容。书中涉及的Python扩展库包括NumPy、SciPy、SymPy、matplotlib、Traits、TraitsUI、Chaco、TVTK、Mayavi、VPython、OpenCV等,涉及的应用领域包括数值运算、符号运算、二维图表、三维数据可视化、三维动画演示、图像处理以及界面设计等。 书中以大量实例引导读者逐步深入学习,每个实例程序都有详尽的解释,并都能在本书推荐的运行环境中正常运行。此外,本书附有大量的图表和插图,力求减少长篇的理论介绍和公式推导,以便读者通过实例和数据学习并掌握理论知识。
Python世界的发展日新月异,在本书第一版出版之后,Python在数据处理、科学计算领域又出现了许多新的进展。第二版将会努力跟上Python发展的步伐,将最新的最热门的扩展库介绍给读者。
0 1

读取Star Dict的字典数据文件,使用array减小内存使用量。

演示如何将matplotlib的Figure嵌入到PyQt4界面中,并调用FuncAnimation实现图表的动画演示。

从指定的链接地址下载IPython notebook并将其转换成HTML和markdown文档。需要安装nbconvert: https://github.com/ipython/nbconvert

采用itertools模块中的各种迭代器和产生器编写,实现懒惰计算。

通过缩小Spyder的工具栏图标、菜单、状态栏,隐藏DockWidget的标题栏等,扩大代码的编辑区域,以适合分辨率较低的屏幕使用。为了运行此程序,首先打开Spyder的Internal Console,然后在其中通过右键菜单中的Run...运行本程序。

Logicool的unify receiver可以同时支持多个无线设备,但是Logicool只提供了Windows下的驱动程序。本程序可在Ubuntu下对无线设备进行绑定。只需要sudo执行本程序,并打开设备的电源开关即可。参考程序: http://tycho.ws/blog/2011/12/logitech-unifying-receiver

演示如何使用plot_date()绘制横轴为日期的图表,可以选择以数据为刻度,或者等间距的刻度。

在张老师代码的基础上,补充了鼠标的操作部分,不是很准确。

本来想发到原帖的回复中,结果格式乱了,先放在这里了。

Python技术

这里是讨论Python技术的地方。欢迎在这儿讨论python语言、其在科学计算方面的应用、以及有关《Python科学计算》方面的内容。

线性方程组求解系数矩阵随结果更新的问题 tccyx 2015/05/12 2 回复 RY
cython能提升文件读取速度吗? styr 2015/04/03 9 TenMaIO
python子图合并问题 eamonustc 2015/03/10 0
使用vpython时遇到的两个困难 JustOu 2015/02/08 0
请教一个幼稚问题 hb12369 2015/01/09 1 RY
Mysqldb链接数据库的问题 chesschen 2014/12/26 0 chesschen
清洗数据真是苦,到最后一步,不会了,快笨cry了,求指点。 善良的右行 2014/09/14 13 RY
数组的下标存取 chegch 2014/09/12 1 RY

语言交流

在这里讨论汉语和日语的学习。

俗语 HY 2014/08/13 18 回复 HY
若愚兄,会不会登坛讲课,讲讲日语? ddbb12 2012/03/22 1 HY

平坦化列表的最佳方法:

1import itertools
2list(itertools.chain.from_iterable(nested_list))

Python科学计算第二版书稿完成

RY Python学习 2小时之前

第一版出版之后,就开始着手第二版的编写,今天终于将所有书稿打包发送给出版社了。剩下的任务就是整理光盘中的开发环境、实例代码以及所有章节的Notebook文件。

下面是第二版的章节目录已经各个章节的总字数和实例代码行数的统计结果:

Python科学计算(第二版) [375970, 10469]
  Python科学计算环境的安装与简介 [20258, 293]
   Python简介 [7320, 1]
    Python2还是Python3 [435, 0]
    开发环境 [2759, 1]
    集成开发环境(IDE) [3237, 0]
   IPython Notebook入门 [10639, 242]
    基本操作 [2062, 7]
    魔法(Magic)命令 [3210, 122]
    Notebook的显示系统 [2181, 65]
    定制IPython Notebook [2814, 48]
   扩展库介绍 [2299, 50]
    数值计算库 [453, 5]
    符号计算库 [157, 3]
    绘图与可视化 [472, 11]
    数据处理和分析 [257, 7]
    界面设计 [415, 0]
    图像处理和计算机视觉 [196, 8]
    提高运算速度 [280, 16]
  NumPy-快速处理数据 [47420, 884]
   `ndarray`对象 [12339, 195]
    创建 [552, 13]
    元素类型 [1003, 18]
    自动生成数组 [1903, 22]
    存取元素 [1335, 32]
    多维数组 [2121, 30]
    结构数组 [1815, 45]
    内存结构 [3375, 34]
   ufunc函数 [7356, 105]
    四则运算 [1068, 5]
    比较和布尔运算 [1352, 11]
    自定义ufunc函数 [927, 14]
    广播 [1622, 34]
    ufunc的方法 [1276, 10]
   多维数组的下标存取 [3058, 47]
    下标对象 [416, 5]
    整数数组作为下标 [1257, 24]
    一个复杂的例子 [754, 11]
    布尔数组作下标 [538, 7]
   庞大的函数库 [20445, 442]
    随机数 [1212, 30]
    求和、平均值、方差 [2570, 37]
    大小与排序 [2935, 64]
    统计函数 [1982, 20]
    分段函数 [1996, 29]
    操作多维数组 [1973, 50]
    多项式函数 [1253, 39]
    多项式函数类 [1871, 88]
    各种乘积运算 [1278, 38]
    广义ufunc函数 [3264, 47]
   实用技巧 [3779, 93]
    动态数组 [1635, 35]
    和其它对象共享内存 [1322, 38]
    与结构数组共享内存 [771, 20]
  SciPy-数值计算库 [46299, 1606]
   常数和特殊函数 [1207, 29]
   拟合与优化-optimize [5010, 216]
    非线性方程组求解 [1544, 26]
    最小二乘拟合 [1371, 102]
    计算函数局域最小值 [1452, 66]
    计算全域最小值 [579, 22]
   线性代数-linalg [5688, 125]
    解线性方程组 [1002, 24]
    最小二乘解 [1669, 32]
    特征值和特征向量 [2061, 52]
    奇异值分解-SVD [903, 17]
   统计-stats [9382, 300]
    连续概率分布 [1467, 30]
    离散概率分布 [517, 7]
    核密度估计 [539, 16]
    二项、泊松、伽玛分布 [3222, 127]
    学生t-分布与t检验 [1784, 62]
    卡方分布和卡方检验 [1714, 58]
   数值积分-integrate [8833, 312]
    球的体积 [1152, 18]
    解常微分方程组 [867, 21]
    ode类 [2423, 132]
    信号处理-signal [58, 0]
    中值滤波 [558, 10]
    滤波器设计 [1076, 36]
    连续时间线性系统 [2646, 95]
   插值-interpolate [4407, 168]
    一维插值 [2560, 85]
    多维插值 [1764, 83]
   稀疏矩阵-sparse [2463, 90]
    稀疏矩阵的储存形式 [779, 17]
    最短路径 [1332, 73]
   图像处理-ndimage [4777, 140]
    形态学图像处理 [2263, 94]
    图像分割 [2083, 46]
   空间算法库-spatial [4283, 224]
    计算最近旁点 [2126, 111]
    凸包 [535, 24]
    沃罗诺伊图 [1296, 67]
    德劳内三角化 [269, 22]
  matplotlib-绘制精美的图表 [44216, 1200]
   快速绘图 [7322, 171]
    使用pyplot模块绘图 [1797, 24]
    面向对象方式绘图 [893, 3]
    配置属性 [689, 15]
    绘制多子图 [1692, 37]
    配置文件 [940, 41]
    在图表中显示中文 [1052, 49]
   Artist对象 [6988, 134]
    Artist的属性 [881, 10]
    Figure容器 [1183, 17]
    Axes容器 [1905, 24]
    Axis容器 [1092, 62]
    Artist对象的关系 [614, 10]
   坐标变换和注释 [8174, 125]
    四种坐标系 [1646, 9]
    坐标变换的流水线 [2812, 23]
    制作阴影效果 [452, 18]
    添加注释 [1951, 14]
   块、路径和集合 [4780, 195]
    Path与Patch [913, 16]
    集合 [3806, 179]
   绘图函数简介 [9488, 263]
    对数坐标图 [332, 12]
    极坐标图 [317, 12]
    柱状图 [477, 11]
    散列图 [642, 8]
    图像 [1235, 38]
    等值线图 [1709, 34]
    四边形网格 [890, 38]
    三角网格 [892, 33]
    箭头图 [1717, 65]
    三维绘图 [1130, 12]
   matplotlib技巧集 [7136, 312]
    使用agg后台在图像上绘图 [1207, 58]
    响应鼠标与键盘事件 [3740, 168]
    动画 [1240, 49]
    添加GUI面板 [924, 37]
  Pandas-方便的数据分析库 [30584, 569]
   Pandas中的数据对象 [6456, 94]
    `Series`对象 [769, 10]
    `DataFrame`对象 [2296, 42]
    `Index`对象 [452, 11]
    `MultiIndex`对象 [565, 19]
    常用的函数参数 [987, 1]
    `DataFrame`的内部结构 [1302, 11]
   下标存取 [2684, 23]
    `[]`操作符 [406, 2]
    `.loc[]`和`.iloc[]`存取器 [470, 6]
    获取单个值 [183, 2]
    多级标签的存取 [345, 3]
    `query()`方法 [361, 6]
   文件的输入输出 [3945, 92]
    CSV文件 [1103, 13]
    HDF5文件 [1956, 61]
    读写数据库 [529, 15]
    使用Pickle序列化 [137, 3]
   数值运算函数 [3064, 76]
    字符串处理 [2079, 49]
   时间序列 [5341, 112]
    时间点、时间段、时间间隔 [995, 28]
    时间序列 [1363, 31]
    与`NaN`相关的函数 [1104, 20]
    改变DataFrame的形状 [1775, 33]
   分组运算 [5205, 37]
    `groupby()`方法 [757, 7]
    `GroupBy`对象 [761, 8]
    分组-运算-合并 [3447, 20]
   数据处理和可视化实例 [3741, 133]
    分析Pandas项目的提交历史 [2521, 90]
    分析空气质量数据 [1104, 43]
  SymPy-符号运算好帮手 [13958, 388]
   从例子开始 [2822, 74]
    封面上的经典公式 [848, 13]
    球体体积 [748, 9]
    数值微分 [1170, 52]
   数学表达式 [3415, 81]
    符号 [1031, 14]
    数值 [564, 10]
    运算符和函数 [925, 15]
    通配符 [825, 42]
   符号运算 [3095, 87]
    表达式变换和化简 [1272, 56]
    方程 [246, 4]
    微分 [359, 8]
    微分方程 [491, 9]
    积分 [674, 10]
   输出符号表达式 [2034, 51]
    `lambdify` [431, 12]
    用`autowrap()`编译表达式 [795, 26]
    使用`cse()`分步输出表达式 [718, 13]
   机械运动模拟 [2339, 95]
    推导系统的微分方程 [1284, 33]
    将符号表达式转换为程序 [613, 26]
    动画演示 [194, 36]
  Traits & TraitsUI-轻松制作图形界面 [33290, 995]
   Traits类型入门 [6394, 116]
    什么是Traits属性 [1328, 22]
    Trait属性的功能 [2079, 44]
    Trait类型对象 [883, 28]
    Trait的元数据 [1647, 22]
   Trait类型 [6623, 169]
    预定义的Trait类型 [2843, 38]
    Property属性 [1306, 25]
    Trait属性监听 [1353, 65]
    Event和Button属性 [574, 22]
    动态添加Trait属性 [503, 19]
   TraitsUI入门 [8171, 178]
    缺省界面 [601, 9]
    用View定义界面 [7129, 169]
   用Handler控制界面和模型 [4104, 107]
    用Handler处理事件 [2261, 66]
    Controller和UIInfo对象 [592, 14]
    响应Trait属性的事件 [601, 27]
   属性编辑器 [5424, 274]
    编辑器演示程序 [1282, 70]
    对象编辑器 [2927, 99]
   自定义编辑器 [787, 103]
  函数曲线绘制工具 [2380, 151]
  TVTK与Mayavi-数据的三维可视化 [36357, 1013]
   VTK的流水线(Pipeline) [5030, 63]
    显示圆锥 [1955, 35]
    用ivtk观察流水线 [2981, 28]
   数据集 [6397, 141]
    ImageData [2524, 49]
    RectilinearGrid [684, 18]
    StructuredGrid [1352, 32]
    PolyData [1545, 42]
   TVTK的改进 [1930, 102]
    TVTK的基本用法 [652, 12]
    Trait属性 [323, 7]
    序列化 [156, 15]
    集合迭代 [129, 24]
    数组操作 [286, 14]
   TVTK可视化实例 [9195, 348]
    切面 [3529, 70]
    等值面 [1491, 36]
    流线 [2360, 67]
    计算圆柱的相贯线 [1558, 175]
   用mlab快速绘图 [11126, 192]
    点和线 [1320, 13]
    Mayavi的流水线 [1766, 22]
    二维图像的可视化 [2213, 39]
    网格面mesh [1575, 42]
    修改和创建流水线 [1254, 41]
    标量场 [1565, 14]
    矢量场 [990, 21]
   将TVTK和Mayavi嵌入到界面中 [2022, 162]
    TVTK场景的嵌入 [713, 55]
    Mayavi场景的嵌入 [1178, 107]
  OpenCV-图像处理和计算机视觉 [31505, 899]
   图像的输入输出 [4297, 128]
    读入并显示图像 [1088, 15]
    图像类型 [681, 42]
    图像输出 [686, 22]
    字节序列与图像相互转换 [494, 10]
    视频输出 [929, 22]
    视频输入 [308, 17]
   图像处理 [5105, 49]
    二维卷积 [1506, 30]
    形态学运算 [1334, 2]
    填充-floodFill [1413, 15]
    去瑕疵-inpaint [747, 2]
   图像变换 [8465, 346]
    几何变换 [1460, 50]
    重映射-remap [1702, 73]
    直方图 [2493, 100]
    二维离散傅立叶变换 [1498, 49]
    用双目视觉图像计算深度信息 [1244, 74]
   图像识别 [7475, 174]
    用Hough变换检测直线和圆 [2921, 74]
    图像分割 [2091, 41]
    SURF特征匹配 [2404, 59]
   形状与结构分析 [2385, 131]
    轮廓检测 [1552, 72]
    轮廓匹配 [760, 59]
   类型转换 [3602, 69]
    分析cv2的源程序 [1521, 57]
    `Mat`对象 [1334, 4]
    在`cv`和`cv2`之间转换图像对象 [504, 8]
  Cython-编译Python程序 [29520, 1040]
   配置编译器 [1144, 17]
   Cython入门 [7248, 130]
    计算矢量集的距离矩阵 [645, 56]
    将Cython程序编译成扩展模块 [974, 22]
    C语言中的Python对象类型 [1389, 12]
    使用cdef关键字声明变量类型 [2862, 18]
    使用def定义函数 [831, 12]
    使用cdef定义C语言函数 [457, 10]
   高效处理数组 [3963, 219]
    Cython的内存视图 [2638, 87]
    用降采样提高绘图速度 [1251, 132]
   使用Python标准对象和API [2219, 78]
    操作`list`对象 [1028, 26]
    创建`tuple`对象 [242, 31]
    用`array.array`作动态数组 [853, 21]
   扩展类型 [6153, 329]
    扩展类型的基本结构 [884, 30]
    一维浮点数向量类型 [2091, 113]
    包装ahocorasick库 [2970, 186]
   Cython技巧集 [8299, 267]
    创建ufunc函数 [3205, 83]
    快速调用DLL中的函数 [1482, 64]
    调用BLAS函数 [3532, 120]
 实例 [42563, 1582]
   使用泊松混合合成图像 [3773, 65]
    泊松混合算法 [1460, 0]
   编写代码 [1747, 63]
   演示程序 [419, 2]
   经典力学模拟 [4426, 207]
    悬链线 [1836, 115]
    最速降线 [972, 40]
    单摆模拟 [1554, 52]
   推荐算法 [5878, 183]
    读入数据 [567, 31]
    推荐性能评价标准 [427, 12]
    矩阵分解 [1431, 21]
    使用最小二乘法实现矩阵分解 [2232, 50]
    使用Cython迭代实现矩阵分解 [1139, 69]
   频域信号处理 [9457, 365]
    FFT知识复习 [1660, 29]
    合成时域信号 [809, 57]
    观察信号的频谱 [4835, 150]
    卷积运算 [2004, 129]
   布尔可满足性问题求解器 [9872, 309]
    用Cython包装PicoSAT [2434, 111]
    数独游戏 [2412, 64]
    扫雷游戏 [3007, 109]
   分形 [9117, 453]
    Mandelbrot集合 [2162, 103]
    迭代函数系统 [3355, 129]
    L-System分形 [1008, 107]
    分形山脉 [2391, 114]