微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过坐标比较对嵌套列表进行排序

如何解决通过坐标比较对嵌套列表进行排序

我正在尝试像这样对嵌套列表进行排序: [[id_num,x_coord,y_coord,z_coord,value],...]

我需要的是按距离减少初始列表中的项目(删除附近的点)并仅保留具有最大值(sublistItem[4])的项目。 所以我试着像这样按距离对列表进行排序:

def compare(listA,listB):
    outData = []
    distance = np.sqrt( (listA[1]-listB[1])**2 + (listA[2]-listB[2])**2 + (listA[3]-listB[3])**2 )
    if (distance < 50) and (distance != 0) :
        outData.append(listA[0])
    return outData


def listReduction(nodeList):
    nearNodesList = []
    for i in range(len(nodeList)):
        for j in range(i+1,len(nodeList)):
            nearNodesList.append(compare(nodeList[i],nodeList[j]))

    uniList = np.unique(np.array(nearNodesList))
    flat_list = [item for sublist in uniList for item in sublist]

    finalList = []
    for item in nodeList:
        if item[0] not in flat_list:
            finalList.append(item) 

    sortedList = sorted(finalList,key = lambda x: x[-1],reverse=True)

通过这种方式,我只减少了项目数量(但不是最大的项目)。你知道如何放入代码条件以保持最大价值吗?

当然,我可以根据最终列表再次循环遍历初始列表,并找到正确距离的最大值。但我认为必须有更简单、更快的解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。