[C++-sig] How to call reshape((M,N),order='F') ?
Michele De Stefano
micdestefano at gmail.com
Mon Oct 26 17:28:57 CET 2009
Hello to everyone.
I have this problem.
Assume I'm building a to-Python converter for a 3x2 matrix type,
FORTRAN storage (these are not the real dimensions of my problem, but
I give these numbers only to simplify the discussion).
Into the "convert" C++ method, first, I build a list with all the
matrix elements (lout);
then, I instantiate a boost::python::numeric::array in this way (note:
I had previously used
set_module_and_type("numpy","ndarray"), for using the NumPy's array):
boost::python::numeric::array v(lout)
Finally, I'd like to call "reshape" on this array, in this way
v.attr("reshape")(make_tuple(3,2),"F");
But it does not work. It builds, but, on runtime, I obtain the error:
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: an integer is required
I tried to build and re-shape a matrix entirely from Python and I
discovered that, when using reshape,
you are forced to give the second parameter as
order = 'C' or 'F'
Now the question is: is it possible to specify a named parameter from
the C++ code ?
If the answer is "yes", how ?
Thank you in advance,
Michele
--
Michele De Stefano
http://www.linkedin.com/in/micdestefano
More information about the Cplusplus-sig
mailing list