1

假设我有一个 4x4 对称二维数组,在长对角线上有 0,如下所示:

[0 1 2 3]
[1 0 3 4]
[2 3 0 5]
[3 4 5 0]

我想为每一列随机平均分配 2 个标签,以便将这些数字分类。例如,第 1 组可能包含来自第 1 列和第 3 列的数字,第 2 组可能包含第 2 列和第 4 列的其余部分。

使用 Python,我如何随机平均地(以便每个标签的数量相等)将 n 个标签分配给 mxm 二维对称数组中的列?

4

1 回答 1

0

我不确定标签列的概念在这里是否有效。这些不是列,而是多个列表中具有相同索引点的元素。为什么不创建一个 LabelList 并使用它来访问您想要的“列”。您可以随机订购 LabelList

import random
LabelList = [1, 2, 3, 4]
random.shuffle(LabelList)
print LabelList

现在您有一个随机排序的标签列表,您可以使用它来访问您的“4x4 数组”,它实际上是 Python 术语中的四个列表的列表。现在,通过引用 LabelList[0] 等来访问数组“column1”中的每个列表。如果您想根据列对工作,LabelList 的前两个元素将引用您有兴趣配对的列表中的索引点。

例如:

List = [[0, 1, 2, 3],[1, 0, 3, 4],[2, 3, 0, 5],[3, 4, 5, 0]]
for elem in List:
     print List[LabelList[0]]

将返回 LabelList 中的第一个元素引用的“列”,该元素已随机混入该点。

我不确定这是否正是您正在寻找的,但希望它有所帮助。

于 2013-07-11T02:17:40.377 回答