[問題] 請問二維list一維化

看板Python作者 (阿一)時間9年前 (2014/08/27 16:09), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/3 (看更多)
我手邊有一些資料分別是3*3 ~ 13*13不等的二維方陣 我需要以方陣中心為起點,找到周圍最大值後以順時針方向將該方陣轉為一維的list, 例如下列5*5方陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 要轉成13 19 18 17 12 7 8 9 14 20 25 24 23 22 21 16 11 6 1 2 3 4 5 10 15 我自己是用很土法煉鋼的方式做出3*3的,但是5*5以上就沒辦法了... 想請問有甚麼方法可以解決這樣的問題,謝謝各位的回答。 以下是我用在3*3的土法煉鋼法,應該有更好的方式才對... import numpy testdata = numpy.array([[1,2,3], [4,5,6], [7,8,9]]) result = [] for i in range(len(testdata)): result.append(testdata[0,i]) for i in range(1,len(testdata)): result.append(testdata[i,len(testdata)-1]) for i in range(len(testdata)-2,0,-1): result.append(testdata[len(testdata)-1,i]) for i in range(len(testdata)-1,0,-1): result.append(testdata[i,0]) result = result[result.index(max(result)):]+ result[0:result.index(max(result))]+ [testdata[1,1]] -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.119.48.60 ※ 文章網址: http://www.ptt.cc/bbs/Python/M.1409126953.A.8F0.html

08/28 01:03, , 1F
需要釐清的是內圈做完最後一個值(14)到外圈第一個值是20
08/28 01:03, 1F

08/28 01:03, , 2F
而非25, 例如 ..... 14 25 24 23 ... 10 15 20
08/28 01:03, 2F

08/28 01:04, , 3F
相對於內圈,25才是這個內圈的周圍的最大值而非20
08/28 01:04, 3F

08/28 01:05, , 4F
如果是設計上就是這樣就沒辦法^^"
08/28 01:05, 4F

08/28 01:16, , 5F
抱歉沒講清楚...只要取中心外圍一圈的最大值就好
08/28 01:16, 5F

08/28 01:17, , 6F
接著就是順時針一直繞出來即可
08/28 01:17, 6F
文章代碼(AID): #1J_P8fZm (Python)
文章代碼(AID): #1J_P8fZm (Python)