python科学计算库-数值计算库与科学计算库

BLAS 接口

BLAS

,

LAPACK

,

ATLAS

这些数值计算库的名字很类似,他们之间有什么关系呢?BLAS是一组线性代数运算接口,目前是事实上的标准,很多数值计算/科学计算都实现了这套接口。

BLAS定义了那些函数呢?可以查看

官方文档

LAPACK是BLAS的第一个实现,是最老牌的数值计算库,用FORTRAN 77语言写的。LAPACK实现了BLAS接口,并扩充了一些功能。很多数值计算库/科学计算库底层调用了LAPACK。

很多硬件厂商都实现BLAS接口,例如

Intel MKL

(Math Kernel Library),

AMCL

(AMD Math Core Library)等。很多开源库也支持,例如ATLAS。

还有非常多的库实现了BLAS接口,见

Wikipedia BLAS

的Implementations小节。

下面介绍一些各种语言常用的数值计算/科学计算库。

C/C++

首先是Intel 的MKL 和 AMD 的AMCL,性能一流,不过是商业软件,价格昂贵。

GSL - GNU Scientific Library

,GNU实现的库,质量很高,不过是用纯C写的,用起来比较繁琐。

Armadillo

,最新版 2013-02-20 Version 3.6.3

IT++

,最后版本是4.2,2010-09-21。

Java

这个页面

JavaNumerics page

专门收集了关于Java数值计算的库。

java-matrix-benchmark

这个开源项目,比较了各类Java线性代数库的性能。

下面介绍一些影响力较大的java数值计算/科学计算库。

Commons Math

, 最新版本是3.1.1,2013年1月9号发布。这个库提供一些基本的数学运算,没有high-level的东西,例如矩阵,向量等,用起来会比较繁琐。

JAMA

, 最新版是Version 1.0.3 (November 9, 2012)。

Colt

,已经不更新了,最后版本是1.2.0,2004年9月发布的。

Apache Mahout使用了Colt作为high performance collections,见官方

这个页面

,说“The implementation of Mahout Collections is derived from Cern Colt”,以及quora 这个帖子

What are the best resources for distributed numerical analysis/matrix algorithms

Python

目前最有影响力的莫过于

NumPy

SciPy

。Amazon.com上可以搜到专门讲它们的书。

SciPy依赖NumPy,主要是在数值计算方面调用了NumPy。

Ruby

SciRuby

, 是SciPy和NumPy的克隆,目前还在开发中。

R

R刚开始时是统计学家开发的语言,专门用于数理统计,现在功能不断增强,内置了很多数值计算和科学计算的功能。R在数据分析领域比较火。

Scala

目前用google搜索 “scala numerical computing”,能找得到的就是

ScalaLab

了。

Matlab

最后,别忘了Matlab是支持多语言调用的。

可以用Matlab生成DLL,给C/C++语言调用。其实,凡是能调用DLL的语言,都可以使用这个DLL,例如Python, Ruby等。

可以用

Matlab JavaBuilder

将m文件转换为jar文件,然后在java代码中就可以调用了。

如何选择

本文的重点在于选择一个高性能,同时又比较易用的库,即被让我们调用,用来写程序的库,不是一个集成环境或REPL环境。因此R和Matlab不在讨论范围内。R和Matlab用来做原型或前期Data Exploration比较适合。

选择一个工具(语言,框架,库等),要看其是否成熟。我个人的一些判断指标,主要有

有没有大厂商的支持(作为vendor之类的);

amazon.com上能否搜到书。

从厂商的支持来看,几个主要的大厂商如 Intel,AMD和Apple都开发了自己的数学库。Python则有很成熟的NumPy,在Amazon上能搜到书,例如“SciPy and NumPy”, “NumPy Cookbook”。 因此,目前来看,C++和Python是比较成熟的方案。

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值