是将它们存储在CUBE类型字段中,然后获得欧几里德距离(使用<->)是唯一的方法吗?
我不能将它们保存为浮动列表,因为我得到:“无法适应numpyndarray类型”
也不能将类型按类型转换为多维数据集。
安装了多维数据集扩展后,我可以使用psycopg2将列表转换为bytea类型,但是似乎什么都不起作用。
我遗漏了什么?
我使用postgresql 10.4、python 3、postgresapp 2.1.4和postico
发布于 2018-05-22 23:11:14
我不能将它们保存为浮动列表,因为我得到:“无法适应numpyndarray类型”
快速谷歌搜索显示南瓜雷是SciPy的“N维数组”。这可以容纳PostgreSQL所称的立方体,反之亦然。
假设有一个转换层,它接受numpyndarray并为您将类型转换为cube。可能没有。您可以提供这样一个层,或者扩展PostgreSQL连接器/驱动程序来提供该层(有关精神科的信息请参见此),但是您将不得不使用text。
这意味着您将调用cube()或提供文本字符串和多维数据集的强制转换。
SELECT '(0,1,2,3,4,5)'::cube;
SELECT CAST ( '(0,1,2,3,4,5)' AS cube );您的工作是将numpyndarray转换为像上面这样的文本表示,然后再将它转换回来。
多维数据集也可以构造为float[],如果DB层支持这一点,您可能会发现更容易,
SELECT cube(ARRAY[0,1,2,3,4,5]::float[]); ## Array-constructor for float[]
SELECT cube('{1,2,3,4,5}'::float[]); ## Text-constructor for float[]https://dba.stackexchange.com/questions/207516
复制相似问题