-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