Python:对打印值进行排序

时间:2021-01-15 20:23:21

标签: python python-3.x

这里,矩阵是一个列表列表

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

我不允许使用 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)

1 个答案:

答案 0 :(得分:0)

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