沿着特定行python汇总数组条目

时间:2017-08-17 15:00:15

标签: python arrays numpy

我有一个2D数组,并希望沿特定行汇总其条目。它应该基本上像numpy.sum(),而不是沿着一列或一行,而是沿着一条线(由等式给出)。

我真的不知道从哪里开始。有this answer使用Radon传输(虽然我没有成功安装skimage包)。

我可以从哪个内置功能开始?

1 个答案:

答案 0 :(得分:0)

以下是我的想法:

array = [[1, 2, 3, 4, 5],
         [1, 2, 3, 4, 5],
         [1, 2, 3, 4, 5],
         [1, 2, 3, 4, 5],
         [1, 2, 3, 4, 5],
         [1, 2, 3, 4, 5]]

def points_on_line(x0,y0, x1,y1):
    dx = x1 - x0
    dy = y1 - y0
    D = 2*dy - dx
    y = y0

    for x in range(x0, x1):
        yield (x,y)
        if D > 0:
            y = y + 1
            D = D - 2*dx
        D = D + 2*dy


print(sum([array[y][x] for x, y in points_on_line(0,0, 5, 4)]))

这使用Bresenheim's Line Algorithm来查找位于两点之间的线上的点。但它并不完美,并且不会返回全部它接触到的点数。不过,这应该是一个很好的跳跃点!