I’ve been using an object in Python with Q via embedPy.
In using this, I’ve found that it appears that lists of floats from Q is represented by embedPy in Python as a numpy array of floats.
This was an issue in my case because the object I used was a little picky and wanted a vanilla python list.
I got around this by use of a function in Python that I called from Q in such a way asIn the end to convert the numpy array back to a list after the data had been projected into Python from Q.
The work I’m doing is not particularly reliant on speed so this isn’t a big deal. However, it struck me this seems a little convoluted. Is there any functionality available to default the projection of the list of floats in Q to a list of floats in Python when using embedPy?
Please find some insight from our team as follows;
embedpy defaults to numpy arrays because that makes a lot more sense for the typical usage pattern.
numpy arrays behave enough like lists that this is usually not a problem.
In a rare case that it is, it’s reasonable to do explicit conversion by calling list(). it’s exposed to q as .p.list, so e.g. to pass a float vector to print() as a python list instead of a numpy array,
q).p.print .p.list 1 2 3f [1.0, 2.0, 3.0]
That’s exactly the same as doing that in python, but saves defining a function