2

我正在将我在 Python 中“原型化”的复杂数据分析例程移植到 C++。我在 Python 代码中广泛使用了 Numpy。我正在考虑在 C++ 端口中使用 GSL,因为它实现了我需要的所有各种数值例程(而 Armadillo、Eigen 等只有我需要的一个子集,尽管它们的 API 更接近我正在寻找的为了)。

GSL 中是否有等价物numpy.minimum(即两个矩阵的元素最小值)?这只是我正在寻找的 Numpy 抽象的一个例子。使用 GSL 时是否必须手动重新实现这样的事情?我注意到 GSL 提供了以下内容:

double gsl_matrix_min (const gsl_matrix * m)

但这只是提供了整个矩阵的最小值。无论按元素进行比较,似乎都无法使用 GSL 报告沿单个矩阵的特定轴的最小值。这让我很惊讶。

我的期望错了吗?

4

1 回答 1

0

您可以通过find().elem()函数在 Armadillo 中轻松实现元素最小值:

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);

对于犰狳中不存在的其他函数,可以通过.memptr()函数将犰狳矩阵与 GSL 函数接口。

于 2013-10-04T04:55:59.367 回答