0
我想讓我的C++代碼使用Swig提供一個numpy數組。一切都很好設置,但是當我通過python運行我的代碼時,我得到一個SwigPyObject。我似乎無法拿出正確的SWIG輸入文件。我的功能看起來是這樣的:SWIG輸入文件和具有numpy的向量。使用%申請?
double*** runshapes(vector<vector<vector<double> > > &array3d,
double T,
double lam,
double Vel){...}
我的.i文件看起來是這樣的:
%module runshapes
%{
#define SWIG_FILE_WITH_INIT
#include "runshapes.h"
%}
%include "numpy.i"
%init %{
import_array();
%}
%include "std_vector.i"
%include "std_string.i"
// Instantiate templates used by example
namespace std {
%template(DoubleVector) vector<double>;
%template(VecVecdouble) vector< vector<double> >;
%template(VecVecVecdouble) vector< vector< vector<double> > >;
}
%include "runshapes.h"
它似乎明白了矢量,但輸出(應該是一個三維數組)出來的SwigPyObject。
我可以使輸出端的三維矢量如果它簡化了問題:)
感謝您的幫助! Christina
嘿,@Christina。使用'std :: vector'你總是會複製數據,不可能使用指針創建'std :: vector'而不復制。我通常使用'llvm'中的'ArrayRef'或者爲std :: vector創建一個包裝器,並使用'numpy.i'中的傳統方法來進行swigging。如果你喜歡,我可以爲此發佈解決方案。它非常整齊 –