Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在swig中使用numpy.i?_Python_C++_Arrays_Numpy_Swig - Fatal编程技术网

Python 如何在swig中使用numpy.i?

Python 如何在swig中使用numpy.i?,python,c++,arrays,numpy,swig,Python,C++,Arrays,Numpy,Swig,我想用SWIG将一些C++代码包到Python,我需要把Nuffy数组发送到C++向量类中进行一些处理。p> 我的问题是,我似乎无法访问swig.I文件中的“numpy.I” 如何导入/包含numpy.I 加上向量i %module add_vector %{ #define SWIG_FILE_WITH_INIT #include "add_vector.h" %} %include "numpy.i" %init %{ import_array(); %} %inclu

我想用SWIG将一些C++代码包到Python,我需要把Nuffy数组发送到C++向量类中进行一些处理。p> 我的问题是,我似乎无法访问swig.I文件中的“numpy.I”

如何导入/包含numpy.I

加上向量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"
tester.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命令行选项的列表,请参见

你将
numpy.i
文件放在哪里?我想你会想放弃Ubuntu软件包,直接从他们的站点获取一个源代码版本的numpy。@Flexo i刚刚按此处指定的“conda install-c anaconda numpy”重新安装了numpy:但这并没有改变任何事情。仍然没有numpy。除了我的python2.7软件包,我在任何地方都能找到它。如果你的机器上有numpy.i,你能告诉我你在键入“查找numpy.i”时看到了什么吗?@Flexo解决了!请参阅Jonathan答案下的第二条评论。这可以消除我发布的错误(谢谢!),但我唯一的numpy.I文件来自python2.7包,它不能正常工作。我不知道为什么,但是numpy。我没有带pyhton3.7.3包,我不知道如何获得它。解决方法:找到您正在运行的numpy版本,然后转到此处()下载numpy-[your_version].zip文件,然后专门复制numpy.I文件,在numpy-[your_version]/tools/swig/中找到。现在将numpy.i粘贴到您的项目工作目录中。
swig -l/path/to/numpy.i ...