我有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])
答案 0 :(得分:0)
借助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