Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中查找列表中的元素_Python_List_Matrix_Count_Frequency - Fatal编程技术网

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

如何在python中查找列表中的元素,python,list,matrix,count,frequency,Python,List,Matrix,Count,Frequency,我刚刚开始学习python 我将图像转换为灰色像素矩阵(0=黑色,255=白色) 如果我 我得到的结果是: pixelmatrix = [154 154 154 ..., 169 169 169] [153 153 153 ..., 166 166 166] [153 153 153 ..., 161 161 161] ..., [151 130 107 ..., 51 85

我刚刚开始学习python

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

如果我

我得到的结果是:

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

我尝试了循环和.计数方法

for x in range(0, lastrow):
    for y in range(0, lastcolumn):
        print sum(pixelmatrix[x,y] 
他们不工作,我不明白为什么。你能帮我吗

非常感谢 再见

贾科莫

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)
编辑:删除代码段中的冗余步骤并添加打印语句


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

假设您谈论的是一个实际的列表列表(您的帖子中缺少一些逗号,这就是我为什么这么说的原因),然后尝试:

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

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

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

您可以使用
sum

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

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

您可以使用
sum

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

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


在您尝试过的循环之后,它们可能几乎是正确的。显示要计数的代码?在
中定义“evaluate”评估一个值的出现,比如255。您是否正在尝试计算
255
pixelmatrix
中出现的次数?@inspectorG4dgetexactly@ErikBrodyDreyer查看帖子,我更新了我使用的周期。在你尝试的周期之后,它们可能几乎正确。显示要计数的代码?在
中定义“evaluate”评估一个值的出现,比如255。您是否正在尝试计算
255
pixelmatrix
中出现的次数?@inspectorG4dgetexactly@ErikBrodyDreyer查看帖子,我更新了我使用的循环,这样做需要创建一个新列表,这是低效的。列表中只有一个
int
图像的每扫描行,但是的,这是不必要的。失去方括号,你就可以开始了。像这样迭代需要创建一个新的列表,这是低效的。该列表在图像的每一扫描行只有一个
int
,但是它是不必要的。失去方括号后,您就可以继续了。抱歉不起作用…它说“NameError:name'no_occurrences'未定义”@Giacomo这是不可能的,请重试。您建议的代码正在工作,但如果我打印no_occurrences(我想看到255的出现),它会说“NameError:name'no_occurrences'未定义”@Giacomo我想你只是在变量名上打了个小错误。你用一个r写的,我用两个r写的。@Xukrao你说得对!它也是这样工作的:-)非常感谢,这是打字错误的问题。谢谢抱歉不起作用…它说“NameError:name'no_occurrencess'未定义”@Giacomo这是不可能的,请重试。您建议的代码正在工作,但如果我打印no_occurrences(因为我想看到255的出现),它说“NameError:name'no_occurrences'未定义”@Giacomo我想你只是在变量名上打了个小错误。你用一个r写的,我用两个r写的。@Xukrao你说得对!它也是这样工作的:-)非常感谢,这是打字错误的问题。谢谢如果我打印pixel_frequency,它会显示“”
pixel_frequency
,这是一个可以用来确定任何值的频率的函数。打印
像素频率(255,像素矩阵)
像素频率(20,像素矩阵)
或任何您想要的内容。这段代码是可重用的。完美!!它起作用了!!我用一张完全空白的图像进行了测试,得到了其中的总像素数。谢谢!如果我打印pixel_frequency,它会显示“”
pixel_frequency
,这是一个可以用来确定任何值的频率的函数。打印
像素频率(255,像素矩阵)
像素频率(20,像素矩阵)
或任何您想要的内容。这段代码是可重用的。完美!!它起作用了!!我用一张完全空白的图像进行了测试,得到了其中的总像素数。谢谢!