2

リストにnumpy2d配列として行列のセットがあります。サイズは異なります(19x19から63x63)。ここで、最小サイズから最大サイズの順に配置する必要があります。私は以下のように行列を入力しています:

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には画像自体が含まれています。これを並べ替える簡単な方法はありますか?....

4

2 に答える 2

2

あなたがしたいのは、並べ替えsizeです...

templates.sort(key=numpy.size)
于 2012-11-12T18:07:46.233 に答える
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

于 2012-11-12T18:04:06.197 に答える