2013-10-03 158 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

相關問題