Robert Bradshaw wrote:
> On Thu, Jul 15, 2010 at 7:24 AM, Neal Becker
> <[email protected]> wrote:
>> What is the current state of using cython to expose numpy arrays to c++
>> code?
>>
>> I have the (typical) setup of python for high-level code, c++ for
>> specialized algorithms. I'm using numpy as the containers.
>>
>> My c++ algorithms are usually written to a generic c++
>> (boost::range-based) interface.
>>
>> Currently, the best solution I know of is to use boost::python and
>> pyublas to interface.
>>
>> Are there any cython examples? Has any of the recent cython work made
>> cython more attractive for this use?
>
> Are you trying to create C++ wrappers for NumPy arrays? In this case
> Cython is almost certainly the wrong tool. The new C++ features allow
> you to more easily use C++ libraries, not write arbitrary C++ code.
>
> - Robert
No, I already have lots of algorithms written in c++ for a generic range-
based interface (templated). These can be instantiated to use with any
container types that fit the range concept.
Right now I'm instantiating them using pyublas::numpy_vector as the
containers, which allows me to use them from python with numpy.
For example, consider this c++ algorithm:
template<typename out_t, typename in_t>
inline out_t repeat (in_t const& in, int cnt) {
out_t out (boost::size (in)*cnt);
typename boost::range_const_iterator<in_t>::type i = boost::begin (in);
typename boost::range_iterator<out_t>::type o = boost::begin (out);
for (; i != boost::end (in); ++i, o+=cnt) {
std::fill (o, (o+cnt), *i);
}
return out;
}
This could be used on a numpy vector, instantiated as:
repeat<pyublas::numpy_vector<double>,pyublas::numpy_vector<double> >
Could cython be used to instantiate and call this function, which takes
a numpy vector<double> as input/output?
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev