我需要一个矩阵,其中所有可能的数字组合都给出k个数字,行总和为1。一个简单的例子:
数字= [0、0.5、1]
这些数字需要排列成矩阵,其中所有可能的数字组合加起来为1。重要的是要存在所有k个数字。在这种简单情况下,最终结果应该是这样的。存在所有数字,每行总计1:
d = {'1': [1, 0, 0, 0.5, 0.5, 0], '2': [0, 0, 1, 0.5, 0, 0.5], '3':[0, 1, 0, 0, 0.5, 0.5]}
到目前为止,我已经尝试通过以下代码使用itertools.permutations:
numbers = list(itertools.permutations([0,0.5,1], 3))
但是,我很难在给定的条件下获得期望的结果。我推测我应该将itertools与行值总和的一些条件语句结合使用。
有人愿意帮助吗?将不胜感激!
答案 0 :(得分:0)
快速入门
这只是遇到此问题时的简短总结和建议。
尝试编辑您的问题,直到每个人都明白:每个人都越容易理解,在您的脑海中也越容易理解。
您的问题与组合相关,但并不完全像您想的那样:
如果您将问题倒过来:
对于每个列
1
还是2 0.5
。显示矩阵
如果操作正确,则应该具有大小为笛卡尔积的笛卡尔积