开发者社区 问答 正文

用于C ++的NumPy样式数组?

是否有C ++(或C)库具有类似NumPy的数组,并支持切片,向量化操作,逐元素添加和减去内容等? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-09 13:27:42 574 分享 版权
1 条回答
写回答
取消 提交回答
  • 这里有一些可能满足您需求的免费软件。

    在GNU科学图书馆是用C编写因此,一个GPL软件,它具有类C(指针等)的分配和方式。使用GSLwrap,您可以使用C ++编程方式,同时仍使用GSL。GSL具有BLAS实现,但是如果您想要更高的性能,则可以使用ATLAS代替默认的CBLAS。

    的升压/ uBLAS库库是一个BSL库,用C ++编写和分布式作为升压包。这是实现BLAS标准的C ++方法。uBLAS具有一些线性代数函数,并且对ATLAS具有实验性约束。

    eigen是用C ++编写的线性代数库,在LGPL3(或GPL2)下分发。这是一种C ++编程方式,但是比其他两种方式集成度更高(可用的算法和数据结构更多)。本征声称比上面的BLAS实现要快,但并未遵循事实上的标准BLAS API。Eigen似乎并没有在并行实现上投入很多精力。

    Armadillo是C ++的LGPL3库。它具有对LAPACK(numpy使用的库)的绑定。它使用递归模板和模板元编程,这是个好主意(我不知道其他库是否也在这样做吗?)。

    xtensor是BSD许可的C ++库。它提供了与NumPy非常相似的C ++ API。有关备忘单,请参见https://xtensor.readthedocs.io/en/latest/numpy.html。

    如果您只想获取数据结构和基本的线性代数,那么这些替代方法真的很好。根据您对样式,许可证或系统管理员挑战的喜好(安装LAPACK之类的大型库可能很困难),可以选择最适合自己需要的一种。

    2020-02-09 13:27:52
    赞同 展开评论
问答分类:
问答标签:
问答地址: