[英]Efficient way of finding the minimum/maximum row index for each column in a numpy.array with nonzero value?
我有一个2D numpy数组iarr
,它来自图片的单色。
我想在每个列中找到具有非零值的最小/最大行索引。 如果列中没有非零值,则无需考虑该列。 我有一个有效的解决方案,但是速度很慢。 我当前的解决方案是
img = Image.open('nameofimage.jpg')
iarr = numpy.array(img)[:,:,0]
nonz = numpy.nonzero(iarr)
colinds = numpy.unique(nonz[1])
minrowinds = numpy.array([numpy.min(nonz[0][nonz[1]==cind]) for cind in colinds])
感谢yatu的指导,我现在可以自己回答这个问题。
colinds = numpy.unique(nonz[1])
minrowinds = numpy.argmax((iarr>0),axis=0)[colinds]
对于最大索引,我必须首先翻转数组,因为np.argmax
总是给出最大值的第一次出现。
maxrowinds = numpy.argmax(numpy.flip((iarr>0),0),axis=0)[colinds]
maxrowinds = iarr.shape[0] - maxrowinds
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.