我想創建一個 Numpy 陣列,它包含所有可能的組合。我有許多樣本,它們可能有一組可能的值。目前我使用遞回,但正在尋找更快的方法來處理大量組合。可能的組合數量是 (n of values)^samples
import numpy as np
import itertools
samples=3
range1=range(1)
range2=range(20,101,10)
a=np.zeros((samples))
total=np.empty((0,samples))
limit=1000
def nested(samples,limit):
if samples>0:
for j in itertools.chain(range1, range2):
a[samples-1]=j
global total
total=np.vstack((total,a))
nested(samples-1,limit)
nested(samples, limit)
total=np.unique(total, axis=0)
print(total.shape)
使用當前應用的遞回方法,構建具有 1M 組合的陣列需要大量時間。
uj5u.com熱心網友回復:
您可以itertools.product()為此使用:
samples = 3
values = list(itertools.chain(range1, range2)) # all iterables
total = [list(item) for item in itertools.product(*[values for _ in range(samples)])]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/523501.html
標籤:Python麻木的递归
