我需要乘以不同的列表來計算不規則多邊形的面積。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