我正在努力将我在 Python 中“原型(prototype)化”的复杂数据分析例程移植到 C++。我在整个 Python 代码中广泛使用了 Numpy。我正在考虑在 C++ 端口中使用 GSL,因为它实现了我需要的所有各种数值例程(而 Armadillo、Eigen 等只有我需要的一个子集,尽管它们的 API 更接近我正在寻找的为了)。
在 GSL 中是否有等同于 numpy.minimum
的东西(即两个矩阵的元素最小值)?这只是我正在寻找的 Numpy 抽象的一个例子。使用 GSL 时,像这样的事情是否必须手动重新实现?我注意到 GSL 提供了以下内容:
double gsl_matrix_min (const gsl_matrix * m)
但这只是提供了整个矩阵的最小值。不管元素方面的比较如何,使用 GSL 报告单个矩阵的特定轴上的最小值似乎是不可能的。这让我很吃惊。
我的期望有误吗?
最佳答案
您可以通过 find() 在 Armadillo 中轻松实现元素最小化。和 .elem()功能:
mat A; A.randu(5,5);
mat B; B.randu(5,5);
umat indices = find(B < A);
mat C = A;
C.elem(indices) = B.elem(indices);
对于 Armadillo 中不存在的其他函数,可以通过 .memptr() 将 Armadillo 矩阵与 GSL 函数连接起来。功能。
关于c++ - GSL 中是否有 `numpy.minimum` 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19160595/