[Numpy-discussion] Question Regarding numpy.i and 2-dimensional input array

Dylan Temple dylantem@umich....
Tue Sep 4 18:18:16 CDT 2012


Hello,

I am trying to use numpy.i to move a function from python to C that takes a
2-D array as an input and am having difficulty.  The code is pretty long so
I've made a simple example that recreates the error.

example.c:

#include <stdio.h>
#include "example.h"

void matrix_example (int n, int m, double *x0, \
   int p, double *x)
{
int i;
int j;
int k;
for (i = 0; i < n; ++i) {
for (j=0; j < 0; ++j) {
x[k] = 2 * x0[i][j];
++k;
}
}
}

example.h:

void matrix_example (int n, int m, double *x0, int p, double *x);

example.i:

%module example

%{
#define SWIG_FILE_WITH_INIT
#include "example.h"
%}

%include "numpy.i"

%init %{
import_array();
%}

%apply (int DIM1, int DIM2, double *IN_ARRAY2) {(int n, int m, double *x0)};
%apply (int DIM1, double *ARGOUT_ARRAY1) {(int p, double *x)};

I then use prompts:

$ swig -python example.i
$ python setup.py build_ext --inplace

However I get the error:
example.c: In function ‘matrix_example’:
example.c:12: error: subscripted value is neither array nor pointer
error: command 'gcc' failed with exit status 1

It seems as though x0 is not actually being passed to the function as a 2-D
array.  Any help on why this error is happening would be great!


Thank you,
Dylan Temple

-- 
Dylan Temple
Graduate Student, University of Michigan NA&ME Department
B.E. Naval Architecture
M.S.E Naval Architecture
121 NA&ME Department, 2600 Draper Dr.
607-592-1749
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20120904/38a2116d/attachment.html 


More information about the NumPy-Discussion mailing list