[问题] 请问二维list一维化

楼主: ee55244 (阿一)   2014-08-27 16:09:10
我手边有一些资料分别是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]]
作者: POSIX (tedium of chores)   2014-08-28 01:03:00
需要厘清的是内圈做完最后一个值(14)到外圈第一个值是20而非25, 例如 ..... 14 25 24 23 ... 10 15 20相对于内圈,25才是这个内圈的周围的最大值而非20如果是设计上就是这样就没办法^^"
楼主: ee55244 (阿一)   2014-08-28 01:16:00
抱歉没讲清楚...只要取中心外围一圈的最大值就好接着就是顺时针一直绕出来即可

Links booklink

Contact Us: admin [ a t ] ucptt.com