2

목록에 numpy 2d 배열로 행렬 집합이 있습니다. 그들은 크기가 다양합니다 (19x19에서 63x63). 이제는 크기가 가장 작은 것부터 최대 크기까지 정렬해야합니다. 다음과 같이 행렬을 입력합니다 :이미지 크기 목록으로 이미지 행렬 목록 정렬 (Numpy nd 배열)

pics=[] 
templates=[] 

c1=0 
for c1 in range(1,31): 
    i1=Image.open("data/"+str(c1)+".gif") 
    pmat = numpy.asarray(i1) 
    pics.append(i1) 
    templates.append(pmat) 

따라서 템플릿은 모든 이미지 행렬을 갖는 목록입니다. pmat 물론 이미지 자체가 포함되어 있습니다. ? 당신은 길이에 의한 이미지의 목록을 정렬 할 수 있습니다

답변

1

이를 정렬 할 수있는 쉬운 방법은 .... 거기에, 아래를 참조하십시오.

이미지 배열은 모든 사각에게 있습니다
>>> import numpy 
>>> a = numpy.array([1,2,3]) 
>>> b = numpy.array([1,3]) 
>>> c = [a,b] 
[array([1, 2, 3]), array([1, 3])] 
>>> sorted(c,key=len) 
[array([1, 3]), array([1, 2, 3])] 

경우 (즉, X-LEN = y-len) 그러면 이것은 문제없이 작동 할 것입니다.

편집 : 정사각형이 아닌 이미지의 경우 유연성이 더 필요한 경우 key=numpy.size을 사용할 수 있습니다. numpy.size``에 의해 정렬

+0

모든 행렬이 정사각형 필요가 없습니다, 더 유연합니다. –

+0

@COpython 방금 깨달았습니다. 내 게시물을 편집했습니다. 감사! – dinkelk

+0

이미지 행렬, 즉 템플릿 대신 pmat을 사용하기로 결정하면 어떻게됩니까? –

2

싶은 것은 size에 의해 일종의 ...

templates.sort(key=numpy.size)