2013-10-03 113 views
2

我正在将一个复杂的数据分析例程移植到Python中,使用Python“原型化”为C++。我在整个Python代码中广泛使用了Numpy。我正在考虑在C++端口中使用GSL,因为它实现了我需要的所有各种数字例程(而Armadillo,Eigen等仅包含我需要的一部分,尽管它们的API更接近我所寻找的对于)。在GSL中是否有`numpy.minimum`相当于?

在GSL中是否有与numpy.minimum相当的值(即两个矩阵的元素最小值)?这只是我正在寻找的Numpy抽象的一个例子。像这样的事情只需在使用GSL时手动重新实现?我注意到,GSL提供了诸如:

double gsl_matrix_min (const gsl_matrix * m)

但是,这只是提供整个矩阵的最小值。无论按照元素进行比较,似乎都不可能使用GSL来报告沿着单个矩阵的特定轴的最小值。这让我感到惊讶。

我的期望错位了吗?

回答

0

可以实现逐元素最小容易在犰狳,经由find().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); 

对于其它功能不存在于犰狳,有可能对接犰狳矩阵与GSL功能,通过.memptr()功能。

+0

正如我所指出的,犰狳和Eigen都​​不具备我需要的所有功能。我确实玩过Eigen(与Armadillo相似,我会想),并且很容易得到我需要的减少量。不过,我需要GSL来达到平衡。我将看看.memptr()并回报。 – ph0t0n

+0

跟着你的链接。这绝对适用于我! “**获取用于存储元素的内存的原始指针,除非您知道自己在做什么,否则不建议使用**” – ph0t0n

相关问题