我有一个嵌套的 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)]
关于元组和数组之间的转换,我有什么遗漏吗?如何从列表中获取其项目四舍五入到较低精度的集合?
甚至建议使用带有浮动元素的集合吗?