我需要乘以不同的列表来计算不规则多边形的面积。Python中的列表乘法运算
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
。
我该怎么做?
我需要乘以不同的列表来计算不规则多边形的面积。Python中的列表乘法运算
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
。
我该怎么做?
所以,在我的理解,你需要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])
说实话,你甚至不需要切分X.'zip(X,Y [1:])'将会提供相同的输出,因为'zip'消耗最短的迭代时会停止。不切片X保存一些内存。 – DeepSpace
喜欢的东西
[x * y for x, y in zip(X, Y[1:])]
会做到这一点。但你真的应该使用Numpy来做任何不重要的事情。
我不能单独使用numpy“Python”,我知道用numpy这很容易。谢谢! – Daniel
“我该怎么做?”你有什么尝试? – DeepSpace
你的输出应该是什么样子?你有什么尝试?请[编辑]问题。 – Tgsmith61591
有了地图功能和很好的切片清单,应该很容易做 – Axnyff