如何在python中的列表列表中查找元素的出现

时间:2017-05-18 19:52:45

标签: python list matrix count frequency

我刚开始学习python。

我将图像转换为灰色像素矩阵(0 =黑色,255 =白色)

from PIL import Image
import numpy
import array

im = Image.open("elephant.jpg")                 
grayim = im.convert('L')                        

pixelmatrix = numpy.asarray(grayim)   

如果我

print pixelmatrix

我得到类似的东西:

pixelmatrix = [154 154 154 ..., 169 169 169]
              [153 153 153 ..., 166 166 166]
              [153 153 153 ..., 161 161 161]
              ..., 
              [151 130 107 ...,  51  85  75]
              [130 133 111 ...,  86  92  56]
              [ 91 127 119 ..., 102 139  66]]

这就是我要找的东西。确定

我想要做的是评估一个值的出现,比方说255。

我尝试了循环和.count方法。

for x in range(0, lastrow):
    for y in range(0, lastcolumn):
        print sum(pixelmatrix[x,y] 

他们不工作,我不明白为什么。你能帮帮我吗?

非常感谢 侨

贾科莫

3 个答案:

答案 0 :(得分:3)

您可以使用sum

def pixel_frequency(value, image):
    return (image == value).sum()

pixel_frequency(255, pixelmatrix)
# 137 (or something)

答案 1 :(得分:2)

from PIL import Image
import numpy
import array

im = Image.open("elephant.jpg")                 
grayim = im.convert('L')                        

pixelmatrix = numpy.asarray(grayim)

no_occurrences = numpy.sum(pixelmatrix==255)
print(no_occurrences)

编辑:删除了代码段中的冗余步骤并添加了print语句。

答案 2 :(得分:1)

假设您正在谈论实际的列表清单(您的帖子中缺少一些逗号,这就是我说这个的原因),请尝试:

numOccurrences = sum([row.count(255) for row in pixelmatrix])