2024-09-24 02:13:51 发布
网友
double*** runshapes(vector<vector<vector<double> > > &array3d, double T, double lam, double Vel){...}
我的.i文件如下:
它似乎能理解向量,但输出(应该是一个3D数组)是SwigPyObject。在
如果能简化问题的话,我可以把输出变成三维矢量:)
谢谢你的帮助! 克里斯蒂娜
我通常使用POD类型使用NumPy类型映射包装接口,如下所示。在
向量3.h
#pragma once #include <stddef.h> int runshapes_wrap(const double* idata, const size_t inx, const size_t iny, const size_t inz, double** odata, size_t* onx, size_t* ony, size_t* onz);
向量3.cpp
向量3.i
%module(docstring="This is a Python wrapper for Sofus") swig_vector %{ #define SWIG_FILE_WITH_INIT #include "vector3.h" %} %include "numpy.i" %init %{ import_array(); %} %apply (double** ARGOUTVIEWM_ARRAY3, size_t* DIM1, size_t* DIM2, size_t* DIM3) {(double** odata, size_t* onx, size_t* ony, size_t* onz)} %apply (double* IN_ARRAY3, int DIM1, int DIM2, int DIM3) {(const double* idata, const size_t inx, const size_t iny, const size_t inz)}; %include "vector3.h"
请注意,typemap ARGOUTVIEWM_ARRAY3确保在Python中删除相应的NumPy数组时删除分配的数据。使用模板,这可以变得非常紧凑,但是每个模板实例化都需要一个typemap。在
# setup.py from distutils.core import setup, Extension setup(name="swig_vector", py_modules=['swig_vector'], ext_modules=[Extension("_swig_vector", ["vector3.i", "vector3.cpp"], swig_opts=['-c++'], extra_compile_args=[' std=c++11'] )] )
使用python setup.py build_ext inplace执行最后一个脚本将生成准备好测试功能的库
python setup.py build_ext inplace
我通常使用POD类型使用NumPy类型映射包装接口,如下所示。在
向量3.h
向量3.cpp
^{pr2}$向量3.i
请注意,typemap ARGOUTVIEWM_ARRAY3确保在Python中删除相应的NumPy数组时删除分配的数据。使用模板,这可以变得非常紧凑,但是每个模板实例化都需要一个typemap。在
使用
python setup.py build_ext inplace
执行最后一个脚本将生成准备好测试功能的库相关问题 更多 >
编程相关推荐