gpt4 book ai didi

python - 在数组和元组之间转换时的舍入问题

转载 作者:太空宇宙 更新时间:2023-11-04 03:55:15 24 4
gpt4 key购买 nike

我有一个 2 元素列表的嵌套列表(纬度/经度坐标)

xlist = [[-75.555476, 42.121701],
[-75.552684, 42.121725],
[-75.55268, 42.122023],
[-75.55250199999999, 42.125071999999996],
[-75.552611, 42.131277] ... ]

我想转换成一个集合。然而,在我进行转换之前,我真的想将这些值向下舍入到较低的精度,以便我可以对其他类似列表执行集合操作并查找两个列表的共同点。

我可以用 numpy 取整,

x = np.round( xlist, decimals = 4 )
array([[-75.5555, 42.1217],
[-75.5527, 42.1217],
[-75.5527, 42.122 ],
...,
[-75.5552, 42.1086],
[-75.5553, 42.1152],
[-75.5555, 42.1217]])

但是结果对象是一个我无法转换为集合的 numpy 数组

s = set( x )
TypeError: unhashable type: 'numpy.ndarray'

我尝试将数组转换回元组的元组

 t = ( tuple( row ) for row in x )

但这会对转换的精度造成不良影响

t.next()
(-75.555499999999995, 42.121699999999997)

我也尝试过一步完成,但没有成功

map( tuple, np.round( x, decimals =5 ) )
[(-75.555480000000003, 42.121699999999997),
(-75.552679999999995, 42.121720000000003),
(-75.552679999999995, 42.122019999999999),
(-75.552499999999995, 42.125070000000001)]

关于元组和数组之间的转换,我是否遗漏了什么?我怎样才能从一个列表得到一个其项目四舍五入到较低精度的集合?

是否建议将集合与 float 元素一起使用?

最佳答案

我认为你的问题的核心是你不能用二维列表创建一个集合......试试这个:

xlist = [[-75.555476, 42.121701],
[-75.552684, 42.121725],
[-75.55268, 42.122023],
[-75.55250199999999, 42.125071999999996],
[-75.552611, 42.131277]]

x = []
for i in xlist:
x.append( [round(i[0],4) , round(i[1],4)] )

s = map(set,x)

关于python - 在数组和元组之间转换时的舍入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18905113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com