boost-python vector processing

I've posted a few times to the python-c++ list, but maybe this subject is of more general interest so I'm posting here. I'm interested in interfacing c++ algorithms (primarily for signal processing) with python via boost-python. I'm trying to develop a library of algorithms, but first the proper infrastructure is needed. Specifically, a choice of underlying container to be used for passing vectors between python and c++. Vector processing is in my view one of the primary interests for boost-python. By processing vectors, the overhead involved with python and the python-c++ interface becomes acceptable. I believe a suitable container for interfacing between python and c++ is of fundamental interest to the boost-python community. I'm sure there must be a lot of interest in this subject. I have tried to investigate 3 candidates. 1) std::vector 2) ublas 3) numarray So far the results are: 1) std::vector - pros: universal availability easily understood supports required operations (insert, erase...) vector_indexing_suite already implemented (could be optimized more) cons: lacks vector arithmetic - but I just implemented this and it isn't difficult even for an amateur like myself 2) ublas: pros: already has vector arithmetic cons: lacks required operations (e.g., erase) no indexing_suite (see above) 3) numarray pros: ? cons: I had a hard time finding documentation. Heavy-weight interface -> high learning curve Summary: It appears that std::vector is a good choice. Ublas might be better in the future, but at present it lacks some required functionality. A ublas vector does not fulfill all the requirements of Sequence. This topic is known to ublas developers and may be addressed in the future. Here is an initial version of vector arithmetic for std::vector:
participants (1)
-
Neal D. Becker