1
0

More than 1 year has passed since last update.

二次元データの並び替え python

Last updated at Posted at 2022-02-23

やりたいこと

frame_grabber.exeを用いてRPLiDARから取得したデータ(x,y,z)をyに注目して並び替えたい

#RPLIDAR SCAN DATA
#COUNT=457
#Angule	Distance	Quality
358.3411 742.0 188
0.9668 735.0 188
1.7468 736.0 188
2.4060 734.0 188
3.0597 733.0 188
3.7134 732.0 188
4.2462 733.0 188
4.9054 731.0 188
5.5591 730.0 188
6.3391 727.0 188
6.8719 728.0 188
7.6520 726.0 188
8.3112 725.0 188
8.9648 725.0 188
9.6240 728.0 188

こんな感じにRPLiDARからデータを取得できる!
これをzを消してyを並び替える

想定環境

・Jupyter-notebook

実際にやってみる

f = open("./a.pts",'r')
data = f.read()
datas_list = data.split('\n')
datas_float = []
for data_list in datas_list:
    datas_float.append(data_list.split(' '))

まず初めにptsファイルを読み込む ※これは,txtファイルと同様に読み込めるみたい
次に改行ごとに分けて,スペースごとに区切って,一個ずつのデータとして見る

datas_floatの中身:list
datas_float[ i ]:list
datas_float[ i ][ j ]:str
x座標 y座標 z座標
'352.1228' '2101.0' '188'
'352.7765' '2165.0' '188'
'353.5620' '1787.0' '188'

z座標はいらなくて,x座標,y座標だけをfloat型で取り出せるようにしたい

データの数は1397
そしてこの時はまだstr型
これをfloat型に変換する

x_list = []
y_list = []

x座標,y座標それぞれのリストを作成する

for i in range (len(datas_float)-1):
    for ii in range(2):
        if(ii % 2 == 1):
            x_list.append(datas_float[i][0]) # [i][0]はx座標
        else:
            y_list.append(datas_float[i][1]) # [i][1]はy座標
                                             # [1][2]はz座標
この時点ではstr
x_list y_list
'352.1228' '2101.0'
'352.7765' '2165.0'
'351.0132' '1583.0'
list_float = []
for i in range(len(x_list)):
    num = []
    num.append(float(x_list[i]))
    num.append(float(y_list[i]))
    list_float.append(num)

x座標とy座標を結合させる

list_float_sorted = sorted(list_float, key=lambda x: x[1])
list_float_sorted[:5]

要素1に着目てして並び替える

list_float
要素0 要素1
201.9979 156.0
211.6515 159.0
9.1241 2749.0

これで昇順の並び替え完了しました!!

おまけ

list_float_sorted = sorted(list_float, key=lambda x: x[1],reverse=True)
list_float_sorted[:5]

keyの後に"reverse=True"を指定すると,昇順から降順になる!!

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0