首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有几个128个元素列表,需要获取它们之间的距离。

有几个128个元素列表,需要获取它们之间的距离。
EN

Database Administration用户
提问于 2018-05-22 17:36:26
回答 1查看 574关注 0票数 3

是将它们存储在CUBE类型字段中,然后获得欧几里德距离(使用<->)是唯一的方法吗?

我不能将它们保存为浮动列表,因为我得到:“无法适应numpyndarray类型”

也不能将类型按类型转换为多维数据集。

安装了多维数据集扩展后,我可以使用psycopg2将列表转换为bytea类型,但是似乎什么都不起作用。

我遗漏了什么?

我使用postgresql 10.4、python 3、postgresapp 2.1.4和postico

EN

回答 1

Database Administration用户

发布于 2018-05-22 23:11:14

我不能将它们保存为浮动列表,因为我得到:“无法适应numpyndarray类型”

快速谷歌搜索显示南瓜雷是SciPy的“N维数组”。这可以容纳PostgreSQL所称的立方体,反之亦然。

假设有一个转换层,它接受numpyndarray并为您将类型转换为cube。可能没有。您可以提供这样一个层,或者扩展PostgreSQL连接器/驱动程序来提供该层(有关精神科的信息请参见此),但是您将不得不使用text

这意味着您将调用cube()或提供文本字符串和多维数据集的强制转换。

代码语言:javascript
复制
SELECT '(0,1,2,3,4,5)'::cube;
SELECT CAST ( '(0,1,2,3,4,5)' AS cube );

您的工作是将numpyndarray转换为像上面这样的文本表示,然后再将它转换回来。

多维数据集也可以构造为float[],如果DB层支持这一点,您可能会发现更容易,

代码语言:javascript
复制
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[]
票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/207516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档