首页 > 解决方案 > Python:对打印值进行排序

问题描述

这里,matrix 是列表的列表

此函数打印出 list1 和 matrix_a 之间的所有距离,但我不确定如何从 matrix_a 和 matrix_b 中获取相应的列表。

我不允许使用 scikit learn 或 numpy

list1 = [5, 3, 2, 8, 5, 10, 8, 1, 2]
matrix_a = [[1, 3, 3, 2, 2, 1, 7, 2, 1], [4, 3, 1, 1, 2, 1, 4, 8, 1], [3, 1, 3, 1, 2, 1, 2, 1, 1], [5, 4, 6, 6, 4, 10, 4, 3, 1], [5, 1, 2, 1, 2, 1, 2, 1, 1], [3, 1, 1, 1, 2, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1, 1, 1], [10, 10, 9, 3, 7, 5, 3, 5, 1], [4, 1, 1, 1, 2, 1, 3, 1, 1], [5, 1, 1, 1, 1, 1, 1, 1, 1]]
matrix_b = [[0], [0], [0], [1], [0], [0], [0], [1], [0], [0]]

def get_distance(list1, list2):
"""returns euclidian distance between 2 lists"""
return sum((p-q)**2 for p, q in zip(list1, list2)) ** .5


def get_k_nearest_labels(list1, matrix_a, matrix_b, k):
    for x in range(len(matrix_a)):
        a = get_distance(list1, matrix_a[x])
        print(a)

标签: pythonpython-3.x

解决方案


您可以将所有距离 ( a) 存储在一个新列表中,对列表进行排序并选择k最小的元素。


推荐阅读