我需要加速以下代码:
for i in range(0, 2**N):
output[i] = f(np.array(map(int, bin(i)[2:].zfill(N))))
N
大约是30
,所以代码非常慢(在我的笔记本上大约需要33个小时)。函数f()
的参数是索引i
的二进制表示,f()
可以是任意的可矢量化函数。我不是专家,但是为了加快代码的速度,我在考虑去掉for
循环,这意味着我需要将f()
的参数矢量化。换句话说,我必须用从0
到{
我在this link找到的。然而,在我看来itertools
非常慢,而且显然它需要大量的内存,因为{
你有什么建议让这段代码更快些吗?提前谢谢。
始终配置文件:
您可以看到,
itertools.product
方法的速度相当快,因为它不必摆弄字符串。在问题可能是大部分时间都花在
f
函数中。在另一种解决方案是使
f
接受一个整数,并将其用作二进制字段。在相关问题 更多 >
编程相关推荐