Mac*_*cer 5 python performance numpy
在迭代算法中,多次使用大型 numpy 数组是很常见的。我想将值填充到现有的大 numpy 数组中,但我发现创建一个新数组甚至更快。
\n\n>>>import numpy as np\n>>>a=np.arange(10000)\n>>>b=a.copy()\n>>>%timeit b=a+a # Every time create a new array\n100000 loops, best of 3: 9.59 \xc2\xb5s per loop\n>>>%timeit b[:]=a+a # Use existing array\n100000 loops, best of 3: 13.3 \xc2\xb5s per loop\n>>>%timeit np.copyto(b,a+a) # Another way to use existing array\n100000 loops, best of 3: 13.4 \xc2\xb5s per loop\nRun Code Online (Sandbox Code Playgroud)\n\nb上面)np.copyto(b,a);b+=a更快,但不是最快的方法。np.add(a,a,b)是目前最好的选择,100000 个循环,3 个中最好的:每个循环 8.66 \xc2\xb5s。也许b[:]=a+a会生成一些临时计算空间?我不知道。但使用“+=、-=、*=、add”这些ufuns是不会错的。