2

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 要素を含むセットを使用することをお勧めしますか?

4

2 に答える 2