我需要乘以不同的列表来计算不规则多边形的区域。
X = [1,1,1,1,1,1]
Y = [5,4,3,2,1,0]
这意味着第1点的坐标为(1,5)
,第2点的坐标为(1,4)
,依此类推。要计算区域,我需要将X[i] * Y[i+1]
乘以等于1 * 4, 1 * 3, 1 * 2
并排除最后一个乘法,例如1 * empty
。
我该怎么做?
答案 0 :(得分:4)
因此,根据我的理解,您需要在X
和Y
之间存在延迟,其中排除Y
的第一个元素,X
的最后一个元素是排除。换句话说,你需要像:
[(1, 4), (1, 3), (1, 2), (1, 1), (1, 0)]
您可以通过以下方式制作以上内容:
zipped = zip(X[:-1], Y[1:])
你可以像这样计算每对产品:
[a * b for a, b in zipped]
当然,如果X
和Y
是numpy数组,那么你可以更有效地做到这一点:
>>> X[:-1] * Y[1:]
array([4, 3, 2, 1, 0])
答案 1 :(得分:2)
像
这样的东西[x * y for x, y in zip(X, Y[1:])]
会这样做。但是你应该把Numpy用于任何非平凡的事情。