2010-04-20 7 views
4

J'utilise SWIG pour passer des tableaux numpy de Python à C++ Code:Plusieurs tableaux numpy avec SWIG

%include "numpy.i" 
%init %{ 
import_array(); 
%} 

%apply (float* INPLACE_ARRAY1, int DIM1) {(float* data, int n)}; 

class Class 
{ 
    public: 
    void test(float* data, int n) 
    { 
    //... 
    } 
}; 

et en Python:

c = Class() 
a = zeros(5) 
c.test(a) 

Cela fonctionne, mais comment puis-je passer plusieurs numpy tableaux à la même fonction?

Répondre

9

Je trouve la réponse d'un collegue de la mine:

%apply (float* INPLACE_ARRAY1, int DIM1) {(float* data1, int n1), (float* data2, int n2)}; 

class Class 
{ 
    public: 
    void test(float* data1, int n1, float* data2, int n2) 
    { 
    //... 
    } 
}; 

maintenant deux tableaux numpy sont transmis à la classe :: test.

+2

vous pouvez raccourcir la directive appliquer un peu en appliquant le typemap aux deux paires d'entrée en même temps: % appliquent (float * INPLACE_ARRAY1, int DIM1) {(float * data1, int n1), (float * data2, int n2)}; – Martin

+0

Merci pour le pourboire! J'ai édité la réponse – Petter