我需要解析两个物体的时间相关位置,并且它们的数据以numpy数组的形式给出:
data = [[0, 1, 2],
[1, 4, 3],
[2, 2, 1]]
第一列代表一个位置,第二列代表时间点A在该特定位置的时间,最后一列代表时间点B在该位置的时间。可以保证数据一致性,也就是说,如果任意两行具有相同的时间,则它们具有相同的位置,在伪代码中:
data[row1,1] == data[row2,1] <=> data[row1,0] == data[row2,0]
data[row1,2] == data[row2,2] <=> data[row1,0] == data[row2,0]
我希望的是以某种方式重新排列这个数组,使其枚举所有可用的时间和相应的位置,例如:
parsed = [[1, 0, 2],
[2, 2, 0],
[3, np.nan, 1],
[4, 1, np.nan]]
这里,第一列是时间,第二列是点A的位置,第三列是点B的位置。当我没有关于某个点的位置信息时,应该分配np.nan。目前我的做法是将数据数组分成两个单独的数组:
moments = set (data [:, 1:3].flatten())
for each in moments:
a = data[:,[1,0]][pos[:,1] == each]
b = data[:,[2,0]][pos[:,2] == each]
我按照John Galt在这里的答案所述的方法重新合并了它们。这种方法可以运行,但我真的希望有更好的解决方案。有人能否指点一下我正确的方向?