有人能帮我把这个循环矢量化吗?

2024-10-01 00:33:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在努力提高代码的效率。我不太熟悉矢量化。我可以做一些简单的,但我在这件事上有困难

def mate(self, parent1, parent2):
    length = parent1.size
    parent1 *= 1e6
    parent2 *= 1e6
    parent1 = parent1.astype(int)
    parent2 = parent2.astype(int)
    child1 = []
    child2 = []
    for i in range(length):
        hold1 = parent1[i]
        hold2 = parent2[i]
        hold1 = np.binary_repr(hold1, 30)
        hold2 = np.binary_repr(hold2, 30)
        pivot = np.random.randint(0, length)
        childGene1 = hold1[:pivot] + hold2[pivot:]
        childGene2 = hold2[:pivot] + hold1[pivot:]
        childGene1 = int(childGene1, 2) / 1e6
        childGene2 = int(childGene2, 2) / 1e6
        child1.append(childGene1)
        child2.append(childGene2)            
    return [child1, child2]

这是我为遗传算法做的交配函数。我应该如何开始矢量化这个循环?你知道吗


Tags: nplength矢量化intpivotbinaryastypechild1