首页 > 解决方案 > 根据坐标值减少多个数组

问题描述

我有 5 个列表:

X = [0,1,2,3,4,0,1,2,3,6]
Y = [9,8,7,6,4,9,4,7,6,3]
R = [1,2,3,4,5,6,7,8,9,0]
P = [2,4,6,8,10,12,14,16,18,20]
Q = [1,3,5,7,9,11,13,15,17,19]

给定重复坐标,我想对引用坐标的属性求和,例如 X[0] = 0 和 Y[0] = 9 这个点在 X[5] 和 Y[5] 处重复,但 R、P 不同, Q 值 R[0] != R[5] 等等。

我正在尝试生成一个具有唯一坐标和重复坐标的总和值的列表,以生成如下所示的新 X、Y、R、P、Q:

X = [0,1,2,3,4,1,6]
Y = [9,8,7,6,4,4,3]
R = [7,2,11,13,5,7,0]
P = [14,4,22,26,10,14,20]
Q = [14,3,20,24,9,11,19]

我无法制定这个问题,任何帮助表示赞赏!

标签: python-3.xlistduplicates

解决方案


如果你使用 pandas,它看起来像这样:

import pandas as pd

X = [0,1,2,3,4,0,1,2,3,6]
Y = [9,8,7,6,4,9,4,7,6,3]
R = [1,2,3,4,5,6,7,8,9,0]
P = [2,4,6,8,10,12,14,16,18,20]
Q = [1,3,5,7,9,11,13,15,17,19]

df = pd.DataFrame([X, Y, R, P, Q])
X, Y, R, P, Q = df.T.groupby([0,1]).sum().reset_index().T.values

这会产生:

[0 1 1 2 3 4 6]
[9 4 8 7 6 4 3]
[ 7  7  2 11 13  5  0]
[14 14  4 22 26 10 20]
[12 13  3 20 24  9 19]

请注意,订单未保留,但数字匹配。


推荐阅读