Amazing! It works! Thank you Robert. I've been stuck with this many days.
Best, Jialin LBNL/NERSC On Tue, Jan 30, 2018 at 10:52 PM, Robert Kern <robert.k...@gmail.com> wrote: > On Wed, Jan 31, 2018 at 3:25 PM, Jialin Liu <jaln...@lbl.gov> wrote: > >> Hello, >> I'm extending C with python (which is opposite way of what people usually >> do, extending python with C), I'm currently stuck in passing a C array to >> python layer, could anyone plz advise? >> >> I have a C buffer in my C code and want to pass it to a python function. >> In the C code, I have: >> >> npy_intp dims [2]; >>> dims[0] = 10; >>> dims[1] = 20; >>> import_array(); >>> npy_intp m=2; >>> PyObject * py_dims = PyArray_SimpleNewFromData(1, &m, NPY_INT16 ,(void >>> *)dims ); // I also tried NPY_INT >>> PyObject_CallMethod(pInstance, method_name, "O", py_dims); >> >> >> In the Python code, I want to just print that array: >> >> def f(self, dims): >> >> print ("np array:%d,%d"%(dims[0],dims[1])) >> >> >> >> But it only prints the first number correctly, i.e., dims[0]. The second >> number is always 0. >> > > The correct typecode would be NPY_INTP. > > -- > Robert Kern > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion > >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion