-1
我有一个2D数组,并且想要沿着特定的行对其条目进行求和。它应该基本上像numpy.sum()
,而不是沿着一列或一行,而是沿着一条线(由等式给出)。在特定的行上对数组条目进行求和,python
我真的不知道从哪里开始。有this answer它使用氡转移(虽然我没有设法porperly安装skimage包)。
有没有我可以从哪里开始的内置函数?
我有一个2D数组,并且想要沿着特定的行对其条目进行求和。它应该基本上像numpy.sum()
,而不是沿着一列或一行,而是沿着一条线(由等式给出)。在特定的行上对数组条目进行求和,python
我真的不知道从哪里开始。有this answer它使用氡转移(虽然我没有设法porperly安装skimage包)。
有没有我可以从哪里开始的内置函数?
这是我想出来的:
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找到躺在两个点之间的线的点。这并不完美,但不会返回全部它触及的点。不过这应该是一个很好的起点!
你在谈论列表清单吗?也就是说,定义'[[1,2,3],[4,5,6]]'? – bendl
首先,您必须确定该线上的点。一旦你有这些总和是微不足道的。详细说明你如何识别这些点。如果可能,请使用迭代代码和示例。我们可能会提出改进建议。 – hpaulj
@bendl是的,它是一个列表的列表。 – SuperCiocia