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

+0

通過'numpy.size'排序更靈活,並不要求所有的矩陣是正方形。 –

+0

@COpython我剛剛意識到這一點。我已經編輯了我的帖子。謝謝! – dinkelk

+0

如果我決定使用圖像矩陣,即pmat而不是模板,該怎麼辦? –

2

你想要做的是排序size ...

templates.sort(key=numpy.size)