gpt4 book ai didi

python - 如何在 swig 中使用 numpy.i?

转载 作者:行者123 更新时间:2023-11-30 03:13:46 28 4
gpt4 key购买 nike

我正在尝试使用 swig 用 python 包装一些 c++ 代码,我需要将 NumPy 数组发送到 c++ vector 类中进行一些处理。

我的问题是我似乎无法访问我的 swig .i 文件中的“numpy.i”。

如何导入/包含 numpy.i?

添加 vector .i

%module add_vector
%{
#define SWIG_FILE_WITH_INIT
#include "add_vector.h"
%}

%include "numpy.i"

%init %{
import_array();
%}

%include std_vector.i
%template(vecInt) std::vector<int>;

%include "add_vector.h"

生成文件

all:
rm -f *.so *.o *_wrap.* *.pyc *.gch add_vector.py
swig -c++ -python add_vector.i
g++ -O0 -g3 -fpic -c add_vector_wrap.cxx add_vector.h add_vector.cpp -I/home/tools/anaconda3/pkgs/python-3.7.3-h0371630_0/include/python3.7m/
g++ -O0 -g3 -shared add_vector_wrap.o add_vector.o -o _add_vector.so

测试器.py

import add_vector as vec 
import numpy as np

a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.empty(len(a))

vec.add(c,a,b)

print('c:', c)

输出:

rm -f *.so *.o *_wrap.* *.pyc *.gch add_vector.py
swig -c++ -python add_vector.i
add_vector.i:7: Error: Unable to find 'numpy.i'
Makefile:2: recipe for target 'all' failed
make: *** [all] Error 1

我正在使用 debian,以防万一。

谢谢!

最佳答案

numpy.i 复制到与 add_vector.i 相同的文件夹中。

或者使用命令行选项 -lifile 并为其指定您的 numpy.i 文件的路径。

swig -l/path/to/numpy.i ...

有关 SWIG 命令行选项的列表,请参阅 http://www.swig.org/Doc3.0/SWIGDocumentation.html#SWIG_nn2

关于python - 如何在 swig 中使用 numpy.i?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58460470/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com