From: Vanroose W. <van...@ru...> - 2000-05-04 09:28:41
|
Dear Travis Oliphant, The pointer result->data is of type (char *). So I still have to do a cast data = (Py_complex *)result->data; Best Wishes Wim Vanroose Travis Oliphant wrote: > Yes, you can create the array, point a pointer to "result->data" and fill > it in. Internally, when the array is created an equivalent malloc is > performed. > > I've changed your code below to eliminate the unecessary copying. > > > > > > static PyObject* matrix(PyObject *self, PyObject *args){ > > double x,y; > > int size; > > int M,n,m; > > PyArrayObject *result; > > int dimensions[2]; > > Py_complex *data; > > Py_complex p; > > if(!PyArg_ParseTuple(args,"idd",&M,&x,&y)) > > return NULL; > > dimensions[0] = M; > > dimensions[1] = M; > > > result = (PyArrayObject > > *)PyArray_FromDims(2,dimensions,PyArray_CDOUBLE); > > > data = result->data; > > for(n=0;n < M;n++){ > > for(m=0; m<M; m++){ > > p.real=x; > > p.imag=y; > > data[n*M+m] = p; > > } > > } > > > return PyArray_Return(result); > > free(data); > > } > > > > Welcome to the wonderful world of NumPy. > > -Travis |