[英]All possible combinations of arrays in python
我在查找 2D 數組的所有組合時遇到問題。 讓我們建議我有一個數組如下:
[
[1,2],
[3,4],
[5,6]
]
現在我需要獲得所有可能的組合,例如
[
[1,3,5],
[1,3,6],
[1,4,5],
[1,4,6],
[2,3,5],
[2,3,6],
[2,4,5],
[2,4,6]
]
我已經設法使用帶有單個數組的 numpy 和 meshgrids 來獲得它:
import numpy as np
array_1 = np.array([1,2])
array_2 = np.array([3,4])
array_3 = np.array([5,6])
combination = np.array(np.meshgrid(array_1, array_2, array_3)).T.reshape(-1,3)
但是對於二維數組,我無法讓它工作。
import numpy as np
multi = [np.array([1,2]), np.array([3,4]), np.array([5,6])]
combination = np.array(np.meshgrid(multi)).T.reshape(-1,len(multi))
這並沒有給我預期的結果,而只是:
[
[1,2,3],
[4,5,6]
]
有沒有辦法讓它正常工作?
您可以使用標准庫中的itertools
包。 itertools.product
生成您希望的所有組合。
import itertools
arrays = [
[1,2],
[3,4],
[5,6]
]
list(itertools.product(*arrays))
#[(1, 3, 5),
# (1, 3, 6),
# (1, 4, 5),
# (1, 4, 6),
# (2, 3, 5),
# (2, 3, 6),
# (2, 4, 5),
# (2, 4, 6)]
如果您更喜歡列表而不是元組,可以執行以下操作:
list(map(list, itertools.product(*arrays)))
#[[1, 3, 5],
# [1, 3, 6],
# [1, 4, 5],
# [1, 4, 6],
# [2, 3, 5],
# [2, 3, 6],
# [2, 4, 5],
# [2, 4, 6]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.