以下是几款适合你需要的免费软件.
GNU Scientific Library是用C编写的GPL软件.因此,它有一种类似C的分配和编程方式(指针等).用GSLwrap,你可以有一个C++编程的方式,同时仍然使用GSL.GSL有一个BLAS实现,但如果您想要更高的性能,可以使用ATLAS代替默认的CBLA.
boost/uBLAS库是一个BSL库,用C++编写,并作为一个Boost包分发.这是实现BLAS标准的C++方式.uBLAS附带了一些线性代数函数,还有一个experimental binding to ATLAS.
eigen是一个线性代数库,用C++编写,在MPL2许可下(从3.1.1版本开始)或LGPL3/GPL2(旧版本)分发.它是一种C++编程方式,但比其他两种更为集成(更多的算法和数据 struct 可用).与上述BLAS实现相比,Egen claims to be faster没有遵循事实上的标准BLAS API.Eigen似乎没有在并行实现上投入太多精力.
Armadillo是C++的LGPL3库.它有LAPACK的绑定(numpy使用的库).它使用递归模板和模板元编程,这是一个很好的观点(我不知道其他库是否也在这样做?).
xtensor是一个C++库,它是BSD许可证.它提供了一个非常类似于NUMPY的C++ API.参见https://xtensor.readthedocs.io/en/latest/numpy.html获取备忘单.
如果你只想得到数据 struct 和基本的线性代数,这些替代方案真的很好.根据您对样式、许可证或系统管理挑战的喜好(安装像LAPACK这样的大型库可能很困难),您可以 Select 最适合您需要的库.