2

我有一组矩阵作为列表中的 numpy 2d 数组。它们有不同的尺寸(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 回答