如何在python中查找列表中的元素
我刚刚开始学习python 我将图像转换为灰色像素矩阵(0=黑色,255=白色) 如果我 我得到的结果是:如何在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
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,像素矩阵)
或任何您想要的内容。这段代码是可重用的。完美!!它起作用了!!我用一张完全空白的图像进行了测试,得到了其中的总像素数。谢谢!