NumSharp ——用C#进行科学计算

NumSharp ——用C#进行科学计算_第1张图片
NumPy是在python中处理数据的最基本和最强大的包。如果您打算从事数据分析或机器学习项目,那么对numpy的充分理解几乎是必须的。其他用于数据分析的软件包(如pandas)是建立在numpy之上的,用于构建机器学习应用程序的scikit-learn软件包也非常适合numpy。但对于.NET开发人员来说,没有这样的工具库。虽然有像Deedle和Math.NET这样的开源库,但它们不是很容易使用,也不能借用很多现有的python代码。

NumSharp(Numerical .NET)是C#中的线性代数库。它是用C#编写的,符合.net标准2.0库。它的目标是允许.NET开发人员使用NumPy的语法编写机器学习代码,从而最大限度地降低迁移python代码的成本。 NumSharp使用最新的Span技术直接安全地访问内存,优化每个模拟API的性能。 NumSharp对于在数组上执行数学和逻辑运算非常有用。它为.NET中的n阵列和矩阵的操作提供了大量有用的功能。

让我们给出一个代码片段来说明如何使用NumSharp。

// 初始化一个NumSharp实例,类名故意叫NumPy
var np = new NumPy();
// 产生一个数字0到9的向量
np.arange(10)
// 产生一个3维张量
np.arange(12).reshape(2, 3, 2);
// 产生10个0到9的随机数,并转换成5*5的矩阵
np.random.randint(low: 0, high: 10, size: new Shape(5, 5));

上面的代码是不是看起来否非常接近python代码?简直就是如出一辙。NumSharp的目的就是让你可以轻松的复制粘贴Python代码。

NumSharp已经能完成非常多的功能,引入了LAPACK的线性代数库支持,并且抽象成Provider模式,从架构上来看具有了可扩展性。增加了更多的Unit Tests,用来保证团队合作时的质量把控。添加了流体动力方程的示例。NDArray增加了隐式转换支持,可以更方便地初始化一个多维数组,并且支持标量ndarray的创建。NumSharp v0.6.1发布,加入支持维度为零时的标量和创建NDArray时的隐式转换,比如支持如下形式创建多维数组:

NDArray nd = new double[,]{{1, 2, 3},{4, 5, 6}};
nd = "[1,2,3;4,5,6]";
// 支持标量
nd = 5.0f;

如何安装:

PM> Install-Package NumSharp

如果您觉得这个库对您有帮助,请积极参与讨论。欢迎在Github上加个星,还有一个示例代码,它是从头开始在NumSharp中实现的人工神经网络。

没有NumSharp,我只想到Python编写机器学习项目,但我熟悉C#。从现在开始,用C#dotnet开始一个新的ML项目是个好的出发点。谢谢你们!

SciSharp repos: https://github.com/SciSharp
Chat room: https://gitter.im/sci-sharp/community

作者:Eric Chen

你可能感兴趣的:(NumSharp)