簡體   English   中英

如何在python中優化以下功能?

[英]How to optimize following function in python?

我有現在需要 15 分鍾到 20 分鍾才能運行的功能。 我在算法中多次使用它,目前是算法。 由於消耗的時間而無法使用。 是否可以優化以下功能:

def find_all():
    for x in range(4, 10):
        for y in range(4, 10):
            for z in range(4, 10):
                for z1 in range(4, 10):
                    for z2 in range(4, 10):
                        for xs in range(13 - x):
                            for ys in range(13 - y):
                                for zs in range(13 - z):
                                    for z1s in range(13 - z1):
                                        for z2s in range(13 - z2):
                                            a = np.zeros(12, int)
                                            a[xs:xs+x] += 1
                                            a[ys:ys+y] += 1
                                            a[zs:zs+z] += 1
                                            a[z1s:z1s+z] += 1
                                            a[z2s:z2s+z] += 1
                                        if 0 not in a:
                                            yield x, y, z,z1,z2s,xs, ys,zs,z1s,z2s,a

%time list(find_all())

基本上我在這里要做的是建立一個沒有零的列表。 我確實嘗試了以下解決方案,但它僅適用於兩個范圍,並且我有一個要求,我可能需要多達 6 個范圍如何在 numpy 數組中生成給定模式的每個組合?

在所有范圍上使用itertools.product可以更輕松地生成索引值。 這將減少編碼開銷。

接下來,請注意您有一個非常規則的重疊范圍序列。 您應該能夠推導出最小間隔覆蓋率,而不是費力地從每個組重新計算它。 在通過增量計算值的過程之前,首先檢查是否所有元素都被覆蓋。

請注意,這五對參數完全可以互換。 如果您不再浪費時間尋找等效的解決方案,則可以減少大量搜索。

這能讓你動起來嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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