BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

为.NET所用的NumPy和SciPy

| 作者 Jonathan Allen 关注 525 他的粉丝 ,译者 侯伯薇 关注 0 他的粉丝 发布于 2011年8月8日. 估计阅读时间: 2 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

作为Python Tools for Visual Studio项目的一部分,NumPy和SciPy程序库已经迁移到.NET上了。这项迁移通过本地的C核心组合了C#和C接口,从而所有.NET语言都能够从中受益。

IronPython对NumPy和SciPy的端口是完整的.NET端口,并且包含了针对一般本地C核心的自定义C#/C接口。这意味着不仅IronPython能够使用所有功能,而且所有.NET语言——像C#和F#——也可以使用,它们只需要访问C#接口对象, 或者有时需要从其它.NET语言解析IronPython表达式。这意味着多维数组对象(ndarray)可以在IronPython和C#或者F#代码之间平滑地传递。此外,ndarray对象实现了标准的IEnumerable接口,这让数组对象可以由现存的代码经常使用,即便不是特别针对NumPy的代码也没问题。

NumPy是一种很低级别的API,用于在大型、多维数组和矩阵上执行数学运算。这个库最初叫做Numeric,是在1995年创建的,那仅仅是Python 1.0发布一年之后。采用当前名称的版本是在2005年创建的,那时这个产品组合了早先的版本和名为numarray的竞争对手的程序库。

SciPy是在其基础之上构建的。据维基百科上所说,“SciPy包含很多模块,能够用于优化、线性代数、整合、插入、特定函数、FFT、符号和图像处理、ODE解析器以及其它科学和工程领域的一般任务。” 人们经常会考虑把它作为MATLAB的替代方案,尽管SciPy经常需要与其它库组合才能够完全替代MATLAB。

NumPy和SciPy的组合为一般的.NET代码提供了很多显而易见的优势。.NET的垃圾回收程序能够比手动的内存管理提供更好的性能,还有就是,通过高度优化的C代码,我们可以获得很好的计算速度。

在此之上还有视图的概念。NumPy不会复制数组,而是让我们可以创建作为其他数组子集存在的数组。改变子集(也就是所说的视图),也会改变原始的数组。这让我们可以在不牺牲性能的情况下获得更整洁的代码。

查看英文原文:NumPy and SciPy for .NET

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

端口? by Anderson Neo

端口 => Port => 移植?

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT