2017-08-08 15 views
-1

私は9×9の正方形のグリッドを持っています。周囲はより大きな広場です。正方形の角の座標が、このようにリストにソートされていない格納されている:Pythonでリストの2乗の点の座標をソート

# upper left corner = x1 y1 
# lower left corner = x2 y2 
# lower right corner = x3 x3 
# upper right corner = x4 y4 

my_listという:

[[[x1 y1][x2 y2][x3 y3][x4 y4]] # square 1 
    [x1 y1][x2 y2][x3 y3][x4 y4]] # square 5 
    [x1 y1][x2 y2][x3 y3][x4 y4]] # square 23 
    . 
    . 
    . 
    [x1 y1][x2 y2][x3 y3][x4 y4]]] # square 3 

私は例えば

my_list[0][0] 
> [x1 y1] 

とコーナーをアクセスもできることを知っています値は次の値を使用します。

my_list[0][0][0] 
> x1 

my_list[0][0][1] 
> y1 

しかし、私はこの方法のようにソートされたリストを持っているのリストをソートする方法を知っているドント:

[[square1][square2][square3]...[square8][square9] 
[square10][square11][square12]...[square17][square18] 
. 
. 
. 
[square72][square73][square74]...[square80][square81]] 

SQUARE1が最低x1と最低Y1の正方形でなければなりません。それは私は最初の、おそらく左上の角が必要なのは正しいですか?なぜなら、グリッドの正方形は同じ長さと幅を持っているからです。

+0

これは単純なPythonのリストですか、それともNumpyの配列ですか? –

+0

最低のx1が最低のy1とペアになっていない場合、ソートする方法は? – stamaimer

+0

ああ申し訳ありませんが、実際には普通のPythonリストを書いていません。 – robinarthur

答えて

0

my_listの形状(9,9,2)から1dのリスト(1、81、2)でフラットにしてソートし、元の形状に変形することができます。

flat_list = [item for row in my_list for item in row] 
flat_list.sort() 

# If you want to reshape the 1d list with shape(1, 81, 2) to 2d list with shape(9, 9, 2) 
result = [] 
temp = [] 
count = 0 

for item in flat_list: 
    temp.append(item) 
    count += 1 
    if count % 9 == 0: 
     result.append(temp) 
     temp = [] 
     count = 0 

# You also can use numpy to reshape flat_list to (9, 9, 2) 
import numpy to np 
result = np.array(flat_list).reshape(9, 9, 2) 
+0

あなたの助けに感謝します。 – robinarthur

関連する問題