在Python中修改Numpy数组(元组定义的)部分的更快/更好的方法?

2024-10-01 17:38:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个numpy像素数组(0或255),使用.where我把元组拉到>;0的位置。我现在想使用这些元组将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

Tags: 方法nonumpyforsize数组wherechange
1条回答
网友
1楼 · 发布于 2024-10-01 17:38:35
movearray[imageasarray.T > 0] += 1

where是冗余的。可以使用布尔掩码(如imageasarray.T > 0生成的掩码)对数组进行索引,以选择掩码为True的所有数组单元格。然后+=将1加到所有这些单元格中。最后,T是一个转置,因为当增加movearray的细胞时,它看起来像是在切换索引。你知道吗

相关问题 更多 >

    热门问题