【发布时间】:2016-12-09 01:10:59
【问题描述】:
出于性能原因,除了 NumPy 之外,我还开始使用 Numba。我的 Numba 算法正在运行,但我觉得它应该更快。有一点正在减慢它的速度。这是代码sn-p:
@nb.njit
def rfunc1(ws, a, l):
gn = a**l
for x1 in range(gn):
for x2 in range(gn):
for x3 in range(gn):
y = 0.0
for i in range(1, l):
if numpy.all(ws[x1][0:i] == ws[x2][0:i]) and
numpy.all(ws[x1][i:l] == ws[x3][i:l]):
y += 1
if numpy.all(ws[x1][0:i] == ws[x2][0:i]) and
numpy.all(ws[x1][i:l] == ws[x3][i:l]):
y += 1
在我看来,if 命令正在减慢它的速度。有没有更好的办法? (我在这里尝试实现的与之前发布的问题有关:Count possibilites for single crossovers)ws 是一个大小为 (gn, l) 的 NumPy 数组,其中包含 0 和 1 的
【问题讨论】:
-
你意识到这与
gn...的大小可怕地缩放? -
是的,当然,l 的最大大小为 9,a 始终为 2
-
您使用的是 Python 2 还是 Python 3?
-
python 3 使用 anaconda