我有一段代码:
position = {}
for x in range(imdim[0]-shapesize+1):
for y in range(imdim[1]-shapesize+1):
curim = im[x:x+shapesize,y:y+shapesize]
shapedict = {}
for shapeid,(shape,contour) in enumerate(zip(shapes,contours)):
values = {}
curshape = curim[shape]
curcontour = curim[contour]
values['meandiff'] = curshape.mean()-curcontour.mean()
values['maxmin'] = int(curshape.min())-int(curcontour.max())
shapedict[shapeid] = values
position[(x,y)] = shapedict
return position
…其中im是一个图像(numpy数组),imdim它的形状、形状和轮廓是比im更小尺寸(shapesize*shapesize)的二进制数组列表。你知道吗
它实际上是有效的,但我想知道是否有一种方法可以把所有这些都写在一个听写理解,盗梦空间的风格。如果是,它会跑得更快吗?你知道吗
此外,欢迎对样式或优化发表任何评论!你知道吗
我认为应该这样做,但我没有真正测试它:
棘手的部分是您定义的临时变量。对于
curim
,我创建了一个内部生成器表达式,否则您必须编写该表达式四次。您可以对curshape
和curcontour
执行相同的操作,但我认为这不值得额外的嵌套级别。你知道吗是否更快:可能不会,当然不会明显。更重要的是,IMHO,代码的可读性。这当然是意见的问题。就我个人而言,我认为它比你原来的代码可读性更好。你知道吗
相关问题 更多 >
编程相关推荐