簡體   English   中英

python中所有可能的數組組合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM