选择列表中前 5 个不同值的所有行

Selecting all rows with the first 5 different values of a list

我有一个包含 100 个元素的预定义列表,其值表示聚类标签。 首先,我想从列表中找到前 5 个不同的集群标签。 然后,我想select所有具有五个值之一的行作为入口,最后将它们的索引和标签写入一个新数组。

我该如何调整我的代码才能实现? 我想我必须使用循环,但由于我是 python 的新手,我不知道如何正确设置它。

list = np.array(list)

new_array = []
for x in list:
  new_array.append(list[index, value]) 
print(new_array)

您可以使用 np.unique 获取列表的唯一值:

first_vals = np.unique(list)[:5]

new_array = []
for index, value in enumerate(list):
    if value in first_vals:
        new_array.append([index, value])
print(new_array)

输出:

[[0, 0], [1, 0], [2, 1], [3, 0], [4, 2], [5, 1], [6, 3], [10, 4], [11, 4], [12, 1], [14, 3], [15, 1], [16, 3], [17, 2], [18, 3]]

(注意:使用 Python 内建函数的名称作为变量名是不好的做法,例如 list