我有一个numpy像素数组(0或255),使用.where我拉取它所在的元组>我现在想要使用这些元组将1添加到单独的2D numpy数组中。是如下所示使用for循环的最佳方法还是有更好的类似numpy的方式?
changedtuples = np.where(imageasarray > 0)
#If there's too much movement change nothing.
if frame_size[0]*frame_size[1]/2 < changedtuples[0].size:
print "No change- too much movement."
elif changedtuples[0].size == 0:
print "No movement detected."
else:
for x in xrange(changedtuples[0].size):
movearray[changedtuples[1][x],changedtuples[0][x]] = movearray[changedtuples[1][x],changedtuples[0][x]]+1
答案 0 :(得分:1)
movearray[imageasarray.T > 0] += 1
where
是多余的。您可以使用布尔掩码(如imageasarray.T > 0
生成的掩码)索引数组,以选择掩码为True的所有数组单元格。 +=
然后将{1}添加到所有这些单元格。最后,T
是转置,因为当您递增movearray
的单元格时,您似乎正在切换索引。