KX Community

Find answers, ask questions, and connect with our KX Community around the world.
KX Community Guidelines

Home Forums kdb+ embedPy: q list imported as numpy array

  • embedPy: q list imported as numpy array

    Posted by simon_watson_sj on October 8, 2021 at 12:00 am

    Hey Team,

    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?

    Regards,

    Simon

    simon_watson_sj replied 8 months ago 2 Members · 1 Reply
  • 1 Reply
  • davidcrossey

    Member
    October 10, 2021 at 12:00 am

    Hi Simon,

    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

     

    q).p.eval["lambda x:print(list(x))";1 2 3f] 
    [1.0, 2.0, 3.0]

     

    Thanks for adding your question on the portal!

    Kind regards,

    David

Log in to reply.