[英]Get combinations of array without self repetition
我有以下形状(3,3)
的数组points
,它们是 3D 点
[[-0.20592405 0.33034652 1.0430001 ]
[-0.23757319 0.29612657 1.03800011]
[-0.304515 0.34571081 1.20400012]]
我需要找到这三点的所有组合。 我正在执行以下操作:
comb = np.array(list(itertools.product(points.tolist(), repeat=3)))
我得到
[[[-0.20592405 0.33034652 1.0430001 ]
[-0.20592405 0.33034652 1.0430001 ]
[-0.20592405 0.33034652 1.0430001 ]]
[[-0.20592405 0.33034652 1.0430001 ]
[-0.20592405 0.33034652 1.0430001 ]
[-0.23757319 0.29612657 1.03800011]]
[[-0.20592405 0.33034652 1.0430001 ]
[-0.20592405 0.33034652 1.0430001 ]
[-0.304515 0.34571081 1.20400012]]
[[-0.20592405 0.33034652 1.0430001 ]
[-0.23757319 0.29612657 1.03800011]
[-0.20592405 0.33034652 1.0430001 ]]
[[-0.20592405 0.33034652 1.0430001 ]
[-0.23757319 0.29612657 1.03800011]
[-0.23757319 0.29612657 1.03800011]]
[[-0.20592405 0.33034652 1.0430001 ]
[-0.23757319 0.29612657 1.03800011]
[-0.304515 0.34571081 1.20400012]]
[[-0.20592405 0.33034652 1.0430001 ]
[-0.304515 0.34571081 1.20400012]
[-0.20592405 0.33034652 1.0430001 ]]
[[-0.20592405 0.33034652 1.0430001 ]
[-0.304515 0.34571081 1.20400012]
[-0.23757319 0.29612657 1.03800011]]
[[-0.20592405 0.33034652 1.0430001 ]
[-0.304515 0.34571081 1.20400012]
[-0.304515 0.34571081 1.20400012]]
[[-0.23757319 0.29612657 1.03800011]
[-0.20592405 0.33034652 1.0430001 ]
[-0.20592405 0.33034652 1.0430001 ]]
[[-0.23757319 0.29612657 1.03800011]
[-0.20592405 0.33034652 1.0430001 ]
[-0.23757319 0.29612657 1.03800011]]
[[-0.23757319 0.29612657 1.03800011]
[-0.20592405 0.33034652 1.0430001 ]
[-0.304515 0.34571081 1.20400012]]
[[-0.23757319 0.29612657 1.03800011]
[-0.23757319 0.29612657 1.03800011]
[-0.20592405 0.33034652 1.0430001 ]]
[[-0.23757319 0.29612657 1.03800011]
[-0.23757319 0.29612657 1.03800011]
[-0.23757319 0.29612657 1.03800011]]
[[-0.23757319 0.29612657 1.03800011]
[-0.23757319 0.29612657 1.03800011]
[-0.304515 0.34571081 1.20400012]]
[[-0.23757319 0.29612657 1.03800011]
[-0.304515 0.34571081 1.20400012]
[-0.20592405 0.33034652 1.0430001 ]]
[[-0.23757319 0.29612657 1.03800011]
[-0.304515 0.34571081 1.20400012]
[-0.23757319 0.29612657 1.03800011]]
[[-0.23757319 0.29612657 1.03800011]
[-0.304515 0.34571081 1.20400012]
[-0.304515 0.34571081 1.20400012]]
[[-0.304515 0.34571081 1.20400012]
[-0.20592405 0.33034652 1.0430001 ]
[-0.20592405 0.33034652 1.0430001 ]]
[[-0.304515 0.34571081 1.20400012]
[-0.20592405 0.33034652 1.0430001 ]
[-0.23757319 0.29612657 1.03800011]]
[[-0.304515 0.34571081 1.20400012]
[-0.20592405 0.33034652 1.0430001 ]
[-0.304515 0.34571081 1.20400012]]
[[-0.304515 0.34571081 1.20400012]
[-0.23757319 0.29612657 1.03800011]
[-0.20592405 0.33034652 1.0430001 ]]
[[-0.304515 0.34571081 1.20400012]
[-0.23757319 0.29612657 1.03800011]
[-0.23757319 0.29612657 1.03800011]]
[[-0.304515 0.34571081 1.20400012]
[-0.23757319 0.29612657 1.03800011]
[-0.304515 0.34571081 1.20400012]]
[[-0.304515 0.34571081 1.20400012]
[-0.304515 0.34571081 1.20400012]
[-0.20592405 0.33034652 1.0430001 ]]
[[-0.304515 0.34571081 1.20400012]
[-0.304515 0.34571081 1.20400012]
[-0.23757319 0.29612657 1.03800011]]
[[-0.304515 0.34571081 1.20400012]
[-0.304515 0.34571081 1.20400012]
[-0.304515 0.34571081 1.20400012]]]
这给了我所有的组合,但我想丢弃重复的组合。 所以,假设 3D 点a
, b
, c
我得到的组合是[[a, a, a], [a, a, b],..,[a, b, c],.., [c, c, c]]
。 我只想保留具有所有不同点的组合,即[a, b, c]
, [b, c, a]
等。
使用itertools.combinations
,只有一个:
l1=[[-0.20592405, 0.33034652, 1.0430001 ],
[-0.23757319, 0.29612657, 1.03800011],
[-0.304515, 0.34571081, 1.20400012]]
comb = np.array(list(itertools.combinations(l1, 3)))
#array([[[-0.20592405, 0.33034652, 1.0430001 ],
# [-0.23757319, 0.29612657, 1.03800011],
# [-0.304515 , 0.34571081, 1.20400012]]])
使用itertools.permutations
:
comb = np.array(list(itertools.permutations(l1, 3)))
comb
的价值:
array([[[-0.20592405, 0.33034652, 1.0430001 ],
[-0.23757319, 0.29612657, 1.03800011],
[-0.304515 , 0.34571081, 1.20400012]],
[[-0.20592405, 0.33034652, 1.0430001 ],
[-0.304515 , 0.34571081, 1.20400012],
[-0.23757319, 0.29612657, 1.03800011]],
[[-0.23757319, 0.29612657, 1.03800011],
[-0.20592405, 0.33034652, 1.0430001 ],
[-0.304515 , 0.34571081, 1.20400012]],
[[-0.23757319, 0.29612657, 1.03800011],
[-0.304515 , 0.34571081, 1.20400012],
[-0.20592405, 0.33034652, 1.0430001 ]],
[[-0.304515 , 0.34571081, 1.20400012],
[-0.20592405, 0.33034652, 1.0430001 ],
[-0.23757319, 0.29612657, 1.03800011]],
[[-0.304515 , 0.34571081, 1.20400012],
[-0.23757319, 0.29612657, 1.03800011],
[-0.20592405, 0.33034652, 1.0430001 ]]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.